Invocation de méthodes de classe parent à partir d'une classe enfant en Python
Lors de la conception d'une hiérarchie d'objets, il est souvent nécessaire d'invoquer des méthodes à partir de classes parents au sein classes dérivées. Dans des langages comme Perl et Java, le mot-clé "super" facilite cela. Cependant, en Python, l'approche semble être différente.
Référencement explicite de la classe parent
En Python, il semble que nommer explicitement la classe parent soit le seul moyen de appeler ses méthodes d'un enfant. Par exemple, si la classe parent Foo contient une méthode frotz, la classe enfant Bar devra la référencer comme Foo::frotz().
Limitations et préoccupations
Cette approche pourrait poser des défis dans des hiérarchies complexes où les enfants ne connaissent pas toujours la classe qui a défini une méthode héritée. Cela peut entraîner des problèmes de maintenance et de lisibilité.
Fonction Super()
Heureusement, Python 2.2 et versions ultérieures ont introduit la fonction super() pour surmonter cette limitation. super() vous permet d'accéder directement aux méthodes de la classe parent. Voici un exemple :
class Foo: def frotz(self): return "Baz" class Bar(Foo): def frotz(self): # Call the parent class's frotz method using super() return super().frotz() + " Quux"
En appelant super().frotz(), la classe enfant Bar peut accéder à la méthode frotz de sa classe parent Foo.
Nouveau style Classes
Pour les versions Python antérieures à 3.0, vous devez explicitement choisir d'utiliser des classes de nouveau style. Dans ce cas, la syntaxe est légèrement différente :
class Foo(Bar): def baz(self, arg): return super(Foo, self).baz(arg)
Dans ces anciennes versions, super prend deux arguments : le nom de la classe enfant (par exemple, Foo) et l'objet d'instance (par exemple, self).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!