Comment invoquer des méthodes de classe parent dans les classes enfants Python
Dans la programmation orientée objet, les classes dérivées doivent généralement accéder aux méthodes définies dans leur classes de parents. Il s'agit d'un scénario courant qui se produit lors de la création de hiérarchies de classes complexes. Cependant, les conventions de dénomination de Python peuvent soulever quelques questions pour les développeurs venant d'autres langages comme Perl et Java.
Contrairement aux mots-clés "SUPER" de Perl ou "super" de Java, Python n'offre pas de moyen prédéfini pour appeler les méthodes parentes. . Au lieu de cela, vous devez spécifier explicitement le nom de la classe parent lors de l’appel de la méthode. Cela peut introduire des défis dans le maintien de hiérarchies de classes profondes, où le traçage de la lignée des méthodes héritées devient compliqué.
Pour surmonter cette limitation et appeler de manière transparente les méthodes parentes, Python fournit la fonction super(). Cet utilitaire vous permet d'appeler des méthodes de la classe parent sans faire explicitement référence à son nom. Examinons comment utiliser super() avec un exemple simple :
class Foo(Bar): def baz(self, **kwargs): return super().baz(**kwargs)
Dans ce code, la classe Foo hérite de Bar et définit une méthode baz(). Dans la méthode baz() de Foo, nous pouvons invoquer la méthode baz() depuis Bar en utilisant super().baz(**kwargs).
Si vous utilisez des versions Python antérieures à 3, vous Vous devrez activer explicitement l'utilisation de classes de nouveau style et écrire le code comme suit :
class Foo(Bar): def baz(self, arg): return super(Foo, self).baz(arg)
En utilisant super() de cette manière, vous pouvez facilement invoquer des méthodes parent, quelle que soit la profondeur de votre classe hiérarchie. Cela maintient votre code propre et maintenable, évitant ainsi le besoin de nommer explicitement la classe parent lors de l'accès à ses méthodes.
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!