Wie verwende ich die Methode __init__() der Funktion super() in Python?

WBOY
Freigeben: 2023-04-27 10:13:13
nach vorne
1843 Leute haben es durchsucht

super().__ init__ () Was nützt es?

super().__init__() 、 super(B,self).__init__()
Nach dem Login kopieren

1. Verstehen Sie super() bzw. __ init __()

1.1, super()

Wie verwende ich die Methode __init__() der Funktion super() in Python?#🎜 🎜 #

需要注意的是python2、3的super写法稍有不同。
Nach dem Login kopieren

1.2, __init__()
__init__() ist ein Konstruktor in Python, der beim Erstellen eines Objekts „automatisch aufgerufen“ wird.

Wie verwende ich die Methode __init__() der Funktion super() in Python?

定义类时可以不写init方法,系统会默认创建,
你也可以写一个,让你的类在创建时完成一些“动作”。
Nach dem Login kopieren

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.

Wie verwende ich die Methode __init__() der Funktion super() in Python?

Natürlich können Sie in B nicht nur super verwenden, um die Methode der übergeordneten Klasse aufzurufen, sondern auch den Namen der übergeordneten Klasse verwenden, z Beispiel:

class B(A):
    def __init__(self):
        A.__init__(self)
        print("B init")
Nach dem Login kopieren

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()调用。
Nach dem Login kopieren
rrree

2. Der Unterschied zwischen super() in Python2 und 3

Ein Unterschied zwischen Python3.x und Python2.x: Python 3 kann super() xxx verwenden ersetzt super(Class, self).xxx:

Beispiel:

python3 direkt geschrieben als: super().__init__()
python2 muss geschrieben werden als: super( Name dieser Klasse, self).__init__()

Python3.x-Instanz:

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()
Nach dem Login kopieren

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
Nach dem Login kopieren
# 🎜🎜# 3. In Bezug auf die Reihenfolge der Vererbung

Die unterste Ebene: Schreiben Sie zuerst eine übergeordnete Klasse A

#!/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
Nach dem Login kopieren

Die zweite Ebene: Lassen Sie B, C und D von A erben 🎜🎜#

class A:
    def __init__(self):
        print('A')
Nach dem Login kopieren
#🎜🎜 #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__()
Nach dem Login kopieren

Sehen Sie sich die Vererbungsreihenfolge von G an

#🎜 🎜#

Wie verwende ich die Methode __init__() der Funktion super() in Python?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 Wie verwende ich die Methode __init__() der Funktion super() in Python?

Vergleichen Sie ihre Unterschiede und ermitteln Sie den Zweck von super().__init__().

4.1, Instanz

Wie verwende ich die Methode __init__() der Funktion super() in Python?Unterklassenname

# ?? _Init # 🎜🎜#Erbt die Init-Methode, überschreibt sie aber. ).__init__() wird zu init hinzugefügt 🎜🎜#4.3, vollständiger Code

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage