Manipuler une liste d'objets - Python - Programmation
Marsh Posté le 05-06-2006 à 18:36:45
1. Style Tu ne suis pas du tout les conventions de la PEP 8 "Style Guide for Python Code", prière de la lire
2. Fais hériter tes classes d' "object"
3. __cmp__
4. Ca te dirait de lire le Python Tutorial?
Marsh Posté le 05-06-2006 à 20:46:56
masklinn a écrit : 1. Style Tu ne suis pas du tout les conventions de la PEP 8 "Style Guide for Python Code", prière de la lire |
1. Je m'excuse mais bon, la touche tab ne fonctionne pas. J'ai corrigé ma syntaxe avec moultes spaces.
2/3/4 Je me suis tapé tout le chapitre sur les listes et l'OOP ( entre autre ) de Learning Python Ed O'Reilly ainsi que Plonger au coeur de python et A byte of python. Bon, je débute complêtement en Python juste par interet pour pimenter ma job et ma seule experience en progr est un cours d'initiation en VB il y a 5 ans .
Je pige les concept mais pour les appliquer, c'est autre chose ! Tu me parles de faire hériter mes instances de la Classe SampleClass en m'aidant de __cmp__ . Je veus bien mais mon problème là, c'est que je n'arrive pas à accéder aux attributs de mes instances dans ma liste. Si je fais un print de celle-ci, j'obtiens l'espace mémoire qui leur est aloué ( si j'ai bien compris ) :
Citation : print SampleList |
Donc, comment je pourrais avoir accès à sX.Depth par exemple ?
Oui, je suis un gros bleu, je pourrais tout faire avec un paquet de listes imbriquées et juste en prodédural mais là, j'aimerais faire l'exercice uniquement en OOP avec classes, methodes, etc ... C'est sur qu'il y a quelque chose qui m'échappe complêtement ici mais je ne trouve aucune référence dans les bouquins ou sur internet de manipulation de listes composées d'instances d'une classe d'objet. Je comprends les exemples et les utilisation des listes ( basiques ) et des objets, j'arrive à me taper les exercices des bouquins mais nul part on m'explique comment mixer les deux !
Alors voila, je suis démasqué Mais je vais continuer à m'ésquinter les neurones la dessus.
Merci
Marsh Posté le 05-06-2006 à 22:02:05
xla99 a écrit : 1. Je m'excuse mais bon, la touche tab ne fonctionne pas. J'ai corrigé ma syntaxe avec moultes spaces. |
Je parlais pas des espaces, va lire cette putain de PEP8, et si tu veux mettre du code il faut utiliser la balise code.
xla99 a écrit : Je pige les concept mais pour les appliquer, c'est autre chose ! Tu me parle de faire hériter mes instances de la Classe SampleClass en m'aidant de __cmp__ . |
WTF
J'ai jamais dit ça
J'ai dit deux choses:
1. Quand tu crées une classe, fait la hériter d'object ou d'une classe héritant d'objet, ça veut dire faire ça:
Code :
|
2. Si tu veux pouvoir trier une liste, il faut que tes objets implémentent la méthode __cmp__, comparateur général, suffit d'aller voir dans l'aide python pour savoir comment ça fonctionne
xla99 a écrit : Je veus bien mais mon problème là, c'est que je n'arrive pas à accéder aux attributs de mes instances dans ma liste. Si je fais un print de celle-ci, j'obtiens l'espace mémoire qui leur est aloué ( si j'ai bien compris ) : |
Ben t'as mal compris, print ne fait qu'imprimer ce que object.__str__() retourne.
xla99 a écrit : Donc, comment je pourrais avoir accès à sX.Depth par exemple ? |
Heuuu c'est une blague
xla99 a écrit : Je comprends les exemples et les utilisation des listes ( basiques ) et des objets |
J'ai pas l'impression non.
Une liste d'objets contient des objets, c'est tout, chaque slot de ta liste contient un objet
Comment tu ferais pour récupérer le 3e objet de ta liste par exemple
Marsh Posté le 05-06-2006 à 22:06:21
masklinn a écrit : Je parlais pas des espaces, va lire cette putain de PEP8, et si tu veux mettre du code il faut utiliser la balise code.
|
Bon, je suis en train de réaliser que le sol se dérobe sous mes pieds et que j'ai encore bcp de lectures devant moi et pas mal de theorie à ingurgiter.
En tout cas, merci quand même
Marsh Posté le 05-06-2006 à 22:08:38
Nan mais tu peux continuer à poser des questions hein, simplement si tu as vraiment lu le Python Tutorial et Dive je pense vraiment que tu ne les as pas compris et que tu devrais les relire sérieusement
Marsh Posté le 06-06-2006 à 14:57:50
Bon, j'ai trouvé la solution
Code :
|
Ce qui me donne pour les deux affichSamples():
Code :
|
Voila.
Par contre, je ne comprends pas pourquoi je devrais faire hériter ma classe SampleClass d'une classe superieur
Marsh Posté le 06-06-2006 à 15:20:04
xla99 a écrit : Bon, j'ai trouvé la solution
|
Vas lire cette putain de PEP8 bordel
xla99 a écrit : Par contre, je ne comprends pas pourquoi je devrais faire hériter ma classe SampleClass d'une classe superieur |
parce que ça permet d'utiliser les new-style classes permettant d'utiliser les properties et les métaclasses, et que dans Python 3.0 toutes les classes seront new-style.
http://www.python.org/download/rel [...] escrintro/
http://www.python.org/dev/peps/pep-0252/
http://www.python.org/dev/peps/pep-0253/
Marsh Posté le 06-06-2006 à 15:39:29
Bon, je m'excuse de passer pour un gros naze et de continuer à m'humilier en publique mais la putain de PEP8, je l'ai lu en long et en large. (http://www.python.org/dev/peps/pep-0008/)
Donc j'ai collé des 4 espaces partout, mes lignes ne font pas plus de 79 caractères, je saute des lignes quand il le faut, je respecte les espaces dans mes expressions et mes déclarations, je colle des commentaires, etc ... Bon, il doit surement y avoir des erreurs de-ci de-là mais de là à s'énerver !
Donc, c'est quoi le putain de problème avec la PEP8 bordel ? Qu'est ce que je ne respecte pas encore dans la présentation de mon code ?
Pour les new-style classes et les metaclasses, je vais aller voir cela
Marsh Posté le 06-06-2006 à 15:47:53
xla99 a écrit : Donc j'ai collé des 4 espaces partout, mes lignes ne font pas plus de 79 caractères, je saute des lignes quand il le faut, je respecte les espaces dans mes expressions et mes déclarations, je colle des commentaires, etc ... Bon, il doit surement y avoir des erreurs de-ci de-là mais de là à s'énerver ! |
les fonctions, variables et attributs doivent être en underscore_separated_lower_case, pas en PascalCase
Marsh Posté le 09-06-2006 à 14:58:46
ReplyMarsh Posté le 09-06-2006 à 15:05:02
chaica a écrit : Et y'a pas de docstrings, ce qui est plus gênant. |
non
Marsh Posté le 05-06-2006 à 18:29:51
Salut, je débute en python et n'ayant jamais fait d'OOP, autant dire que c'est chaud. Je comprends bien la theorie mais de là à l'appliquer ....
Voila, j'arrive à créer une liste d'instances de la classe SampleClass mais j'ai beau chercher, j'arrive pas à trouver d'exemple de manipulation d'une telle liste.
Mes questions seraient :
- Comment puis je faire pour classer mes samples dans ma liste en fonction de l'attribut "Depth"
- Comment ensuite aller chercher les valeurs de THM de chaque sample ainsi classés
Je retourne, mes recherches, merci.
Message édité par xla99 le 06-06-2006 à 02:22:08