Maison > développement back-end > Tutoriel Python > Comment puis-je appeler des méthodes de classe parent à partir de classes enfants en Python ?

Comment puis-je appeler des méthodes de classe parent à partir de classes enfants en Python ?

Mary-Kate Olsen
Libérer: 2024-12-03 14:14:16
original
731 Les gens l'ont consulté

How Can I Call Parent Class Methods from Child Classes in Python?

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"
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal