j'ai une petite question toute bête concernant python.
Supposons une classe Pouet héritant de Prout.
J'aurai plutot tendance a mettre dans sa methode __init__ un appel a la methode __init__ de Prout
Sauf que dans mon python (2.4), je viens de m'aperçevoir que c'est réaliser de manière automatique !
Et là je m'interroge, est-ce donc inutile d'appeler le constructeur de la superclasse ?
J'ai googlisé un peu et j'suis tombé la dessus, http://fr.diveintopython.org/fileinfo_class.html(...)
Petit extrait choisi :
Certain langage pseudo-orientés objet comme Powerbuilder ont un concept d’“extension” des constructeurs et autres évènements, dans lequel la méthode de l’ancêtre est appelée automatiquement avant que la méthode du descendant soit exécutée. Python n’a pas ce comportement, vous devez appeler la méthode appropriée de l’ancêtre explicitement
le tout illustré par
class FileInfo(UserDict):
"store file metadata"
def __init__(self, filename=None):
UserDict.__init__(self) 1
self["name"] = filename
Alors docteur ?
# Contre exemple
Posté par Pinaraf . Évalué à 4.
Démonstration :
In [1]: class base:
.1.: def __init__ (self):
.1.: print "Constructeur - base"
.1.: self.based = True
.1.:
In [2]: class derived(base):
.2.: def __init__ (self):
.2.: print "Constructeur - derived"
.2.: self.derived = True
.2.:
In [3]: a = derived()
Constructeur - derived
In [4]:
[^] # Re: Contre exemple
Posté par cho7 (site web personnel) . Évalué à 2.
"Si la classe dérivée a son propre constructeur, alors le constructeur de la classe mère n'est pas appelé automatiquement."
Merci !
[^] # Re: Contre exemple
Posté par Serge Julien . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.