Maison >développement back-end >Tutoriel Python >Une brève analyse des problèmes d'héritage Python

Une brève analyse des problèmes d'héritage Python

高洛峰
高洛峰original
2017-03-02 16:01:281379parcourir

Cet article présente principalement des informations pertinentes sur l'analyse approfondie des problèmes d'héritage python. C'est très bien. Les amis intéressés devraient y jeter un œil.

Le code suivant est disponible :

.

class p1:
def __init__(self,a,b):
print("init in p1")
self.a1=a
self.b1=b
self.f1()
def f1(self):
print("f1 in p1")
class c1(p1):
def __init__(self,a,b,c=2):
print("init in c1")
p1.__init__(self,a,b)
self.c1=c
self.f1()
def f1(self):
print("f1 in p2")
class c2(c1):
pass
c=c2(11,22)
print(c.a1)
print(c.b1)
print(c.c1)

Ensuite, le résultat d'exécution du code est le suivant :

F:\python_code\test>python class_init.py
init in c1
init in p1
f1 in p2
f1 in p2
11
22
2

Concernant le processus d'exécution du code, j'ai la question suivante. J'appellerai p1.__init__() dans la fonction __init__ de c1, puis j'exécuterai la fonction c1.f1() à chaque fois. p1.f1(). Le f1() exécuté dans p1 ), c'est aussi c1.f1(). Pourquoi?

Analyse des causes :

p1.__init__(self,a,b)

self dans cette ligne de code est L'objet de c1. Donc le self passé à p1 est aussi c1.

Le contenu ci-dessus vous présente le problème de l'héritage python à travers le code. J'espère qu'il vous sera utile !

Pour plus d'articles liés à une brève analyse des problèmes d'héritage python, veuillez faire attention au site Web PHP chinois !


Déclaration:
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