Heim >Backend-Entwicklung >Python-Tutorial >Wie verwende ich die Methode __init__() der Funktion super() in Python?
super().__init__() 、 super(B,self).__init__()
#🎜 🎜 #
需要注意的是python2、3的super写法稍有不同。1.2, __init__()__init__() ist ein Konstruktor in Python, der beim Erstellen eines Objekts „automatisch aufgerufen“ wird.
定义类时可以不写init方法,系统会默认创建, 你也可以写一个,让你的类在创建时完成一些“动作”。1.3, super(). __ init __()Wenn Unterklasse B und Elternklasse A, beide If Die Init-Methode wird geschrieben,
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")1.3.1. Fragen zu „Abdeckung“Manche Leute verstehen möglicherweise die Bedeutung von „Abdeckung“ falsch und denken, dass „Abdeckung“ nichts bedeutet immer noch über super angerufen werden?
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()调用。rrree2. Der Unterschied zwischen super() in Python2 und 3Ein Unterschied zwischen Python3.x und Python2.x: Python 3 kann super() xxx verwenden ersetzt super(Class, self).xxx:
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()Python2.x-Instanz:
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# 🎜🎜# 3. In Bezug auf die Reihenfolge der Vererbung
#!/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')#🎜🎜 #Dritte Ebene: E-, F-, G-Vererbung
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
Unterklassenname
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!