Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich die Methode __init__() der Funktion super() in Python?

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

WBOY
WBOYnach vorne
2023-04-27 10:13:131761Durchsuche

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

super().__init__() 、 super(B,self).__init__()

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

1.1, super()

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

需要注意的是python2、3的super写法稍有不同。
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方法,系统会默认创建,
你也可以写一个,让你的类在创建时完成一些“动作”。
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")

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 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()

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

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

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

#🎜 🎜#

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen