super().__init__() 、 super(B,self).__init__()
#🎜 🎜 #
需要注意的是python2、3的super写法稍有不同。
定义类时可以不写init方法,系统会默认创建, 你也可以写一个,让你的类在创建时完成一些“动作”。
dann wird die Init-Methode von A von B überschrieben. Wenn Sie die Init-Methode von A aufrufen möchten, müssen Sie sie mit super aufrufen.
class B(A): def __init__(self): A.__init__(self) print("B init")
Abgedeckt bedeutet nicht, dass die Methode von A immer noch da ist, aber sie muss mit Super in B aufgerufen werden.
例: A里写了一个方法hi(), B继承自A, B里也写了一个方法hi()。 B的对象在外部调用hi(), 就只能调用B里面写的这个hi()。 想通过B调用A的hi(),只能在B内部用super().hi()调用。
Beispiel:Python3.x-Instanz:python3 direkt geschrieben als: super().__init__()
python2 muss geschrieben werden als: super( Name dieser Klasse, self).__init__()
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()
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) # 3
#!/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
Die zweite Ebene: Lassen Sie B, C und D von A erben 🎜🎜#
class A: def __init__(self): print('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__()
Sehen Sie sich die Vererbungsreihenfolge von G an
#🎜 🎜#
Wir haben festgestellt, dass G von E erbt und F parallel ist. Während der Initialisierung wird E nicht initialisiert, bevor F initialisiert wird.
4. Vergleichen Sie super (python3) aus mehreren Instanzen
Vergleichen Sie ihre Unterschiede und ermitteln Sie den Zweck von super().__init__(). 4.1, InstanzUnterklassenname
# ?? _Init # 🎜🎜#Das obige ist der detaillierte Inhalt vonWie verwende ich die Methode __init__() der Funktion super() in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!