Bonjour,
y a-t-il un moyen d'enchaîner la construction et l'appel d'une de ses méthodes ?
Voici un bout de code pour comprendre ma question :
ce qui fonctionne mais ne me plait pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class Spam: def __init__(self): self.eggs = 0 def set (self,x,message): self.eggs = x print message,': eggs =',self.eggs
ce qui me plait mais ne fonctionne pas (s2 vaut None)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 s1 = Spam() s1.set( 12,'appels séparés') # appels séparés : eggs = 12 print s1 # <__main__.Spam instance at 0x00B557B0> print s1.eggs # 12
Et d'ailleur, pourquoi ai-je None ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 s2 = Spam().set( 5,'appels enchainés') # appels enchainés : eggs = 5 print s2 # None
Je n'arrive pas à comprendre le mécanisme sous-jacent de python qui me donne None...
Attention, je ne veux pas polluer ma fontion __init__ en ajoutant un paramètre x.
Ici, c'est un exemple très simplifié.
Dans mon vrai code, __init__ a déjà plein de paramètres et je trouverais très laid d'en ajouter juste pour résoudre ce problème.
And now for something completely different !
Un autre problème, celui de la comparaison profonde :
Comment recevoir True ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class Bean: def __init__ (self,x): self.eggs = x bean1 = Bean( 5 ) bean2 = Bean( 5 ) print bean1 == bean2 # False
Autrement dit, y a-t-il un moyen de comparer les contenus (et non les pointeurs) ?
Voilà, si quelqu'un a des idées, je suis preneur.
Merci d'avance.
Hadrien
(z'avez vu, j'ai mis des balises CODE )
Partager