Maison > Article > développement back-end > Comment utiliser la méthode __init__() de la fonction super() en Python ?
super().__init__() 、 super(B,self).__init__()
#🎜 🎜 #
需要注意的是python2、3的super写法稍有不同。1.2, __init__()__init__() est un constructeur en python, qui est "automatiquement appelé" lors de la création d'un objet.
定义类时可以不写init方法,系统会默认创建, 你也可以写一个,让你的类在创建时完成一些“动作”。1.3, super() __ init __()Si la sous-classe B et la classe parent A, toutes deux If. la méthode init est écrite
alors la méthode init de A sera écrasée par B. Si vous souhaitez appeler la méthode init de A, vous devez utiliser super pour l'appeler.
class B(A): def __init__(self): A.__init__(self) print("B init")1.3.1. Questions sur la « couverture »Certaines personnes peuvent mal comprendre le sens de « couverture » et penser que « couverture » ne veut rien dire. toujours être appelé par super ?
Couvert ne veut pas dire qu'il a disparu. La méthode de A sera toujours là après tout, mais elle doit être appelée avec super à l'intérieur de B.
例: A里写了一个方法hi(), B继承自A, B里也写了一个方法hi()。 B的对象在外部调用hi(), 就只能调用B里面写的这个hi()。 想通过B调用A的hi(),只能在B内部用super().hi()调用。
class A: def hi(self): print("A hi") class B(A): def hello(self): print("B hello") b = B() b.hi() # B里没有写hi(),这里调用的是继承自A的hi() ------------------------------------------------------------------ class A: def hi(self): print("A hi") class B(A): def hi(self): print("B hi") b = B() b.hi() # 这里调用的就是B自己的hi() ------------------------------------------------------------------ class A: def hi(self): print("A hi") class B(A): def hi(self): super().hi() # 通过super调用父类A的hi() print("B hi") b = B() b.hi() # 这里调用的就是B里面的hi()2. La différence entre super() dans python2 et 3Une différence entre Python3.x et Python2.x : Python 3 peut utiliser super() directement. remplace super(Class, self).xxx :
Exemple :Instance Python3.x :python3 directement écrit comme : super().__init__()
python2 doit être écrit comme : super( Nom de cette classe, self).__init__()
class A: def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super().add(x) b = B() b.add(2) # 3Instance Python2.x :
#!/usr/bin/python # -*- coding: UTF-8 -*- class A(object): # Python2.x 记得继承 object def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super(B, self).add(x) b = B() b.add(2) # 3# 🎜🎜# 3. Concernant l'ordre d'héritage
class A: def __init__(self): print('A')
Le deuxième niveau : laissez B, C et D hériter de A# 🎜🎜#
class B(A): def __init__(self): print('B') super().__init__() class C(A): def __init__(self): print('C') super().__init__() class D(A): def __init__(self): print('D') super().__init__()#🎜🎜 #Troisième niveau : héritage E, F, G
class E(B, C): def __init__(self): print('E') super().__init__() class F(C, D): def __init__(self): print('F') super().__init__() class G(E, F): def __init__(self): print('G') super().__init__()
Regardez l'ordre d'héritage de G
#🎜 🎜#
Nous avons constaté que G hérite de E et que F est parallèle Lors de l'initialisation, E ne sera pas initialisé avant que F ne soit initialisé.
4. Comparez super (python3) à partir de plusieurs instances
Voici trois héritages et appels différents. Comparez leurs différences et déterminez le but de super().__init__ (). 4.1, instanceNom de la sous-classe
# 🎜🎜#Hériter le contenuPuple | Hériter tout |
---|---|
Pup le_Init # 🎜🎜# | Hérite, mais remplace la méthode d'initialisation|
Inherits, mais remplace la méthode d'initialisation, et Super( ).__init__() est ajouté à init 🎜🎜# | 4.3, code complet |
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!