Python >> Tutoriel Python >  >> Python

Comment appeler la méthode de classe d'un parent en Python ?

Formulation du problème :Appel des méthodes parentes

Étant donné

  • Classe parente P
  • Classe enfant C qui hérite de P
  • Méthode de classe P.my_method() défini sur le parent P

Problème :Dans une méthode de classe C , comment appeler la méthode parents P.my_method() ?

Exemple :Considérez l'exemple suivant où vous créez une classe parent et une classe enfant. Vous voulez appeler le my_method( ) depuis les classes enfants child_method( ).

class P:
    '''Parent Class'''
    def my_method(self):
        print('hi')

class C(P):
    '''Child Class'''
    def child_method(self):
        # ... Call my_method() of parent P ...
        # TODO


# Create a child
child = C()
child.child_method()
# OUTPUT: hi

Alors, comment appeler les méthodes parentes ? Plongeons-nous directement dans notre première méthode !

Méthode 1 :Utiliser l'auto-référence pour accéder à la méthode parent

L'enfant hérite de toutes les méthodes et attributs du parent. Ainsi, pour accéder à la méthode parent, vous pouvez utiliser le self référence passée comme argument d'une méthode enfant. Par exemple, vous pouvez appeler le self.parent_method() dans la méthode enfant pour accéder à la méthode parent.

Voici un exemple :

class P:
    def parent_method(self):
        print('hi')

class C(P):
    def child_method(self):
        self.parent_method()


child = C()
child.child_method()

Le résultat est, en effet :

hi

Cependant, cela ne fonctionne que si l'enfant n'écrase pas la méthode du parent. Lisez la suite pour apprendre à utiliser super() pour gérer ce problème !

Méthode 2 :Utilisez super() pour accéder à la méthode du parent

super() intégré de Python La méthode renvoie un objet temporaire de la classe parent pour vous aider à accéder à ses méthodes. Son but est d'éviter d'utiliser explicitement le nom de la classe de base. Cela permet également à votre classe d'hériter de plusieurs classes de base.

Voici comment vous pouvez vous assurer d'appeler la méthode du parent depuis l'enfant en utilisant super() —même si l'enfant écrase la même méthode.

class P:
    '''Parent'''
    def my_method(self):
        print('parent')

class C(P):
    '''Child'''
    def my_method(self):
        print('child')


    def call_parent_method(self):
        super().my_method()

        
child = C()
child.call_parent_method()
# parent

Notez que si vous n'avez pas utilisé super().my_method() mais self.my_method() comme dans la Méthode 1 , Python appellerait la méthode de l'enfant car il écrase la méthode du parent.

class P:
    '''Parent'''
    def my_method(self):
        print('parent')

class C(P):
    '''Child'''
    def my_method(self):
        print('child')


    def call_parent_method(self):
        self.my_method()

        
child = C()
child.call_parent_method()
# child

Vous pouvez regarder la vidéo pour tout savoir sur le super() de Python méthode :

Humour de programmeur

Il n'y a que 10 types de personnes dans ce monde :ceux qui connaissent le binaire et ceux qui ne le connaissent pas.
👩🧔‍♂️
~~~

Il existe 10 types de personnes dans le monde. Ceux qui comprennent le trinaire, ceux qui ne le comprennent pas et ceux qui le confondent avec le binaire.

👩🧔‍♂️👱‍♀️


Post précédent