Diese Frage ist in Bezug auf die Beiträge bei What does 'super' do in Python?, How do I initialize the base (super) class? und Python: How do I make a subclass from a superclass?, die zwei Möglichkeiten, beschreibt ein SuperClass
aus einem SubClass
alsExplicit Gang Selbst wenn Superklasse __init__ in Python ruft
class SuperClass:
def __init__(self):
return
def superMethod(self):
return
## One version of Initiation
class SubClass(SuperClass):
def __init__(self):
SuperClass.__init__(self)
def subMethod(self):
return
oder
zu initialisieren soclass SuperClass:
def __init__(self):
return
def superMethod(self):
return
## Another version of Initiation
class SubClass(SuperClass):
def __init__(self):
super(SubClass, self).__init__()
def subMethod(self):
return
ich bin ein wenig verwirrt darüber zu müssen explizit Pass self
als Parameter in SuperClass.__init__(self)
und super(SubClass, self).__init__()
. (In der Tat, wenn ich rufe SuperClass.__init__()
erhalte ich die Fehler
TypeError: __init__() missing 1 required positional argument: 'self'
). Aber wenn Konstrukteure oder andere Klassenmethode aufrufen (dh:
## Calling class constructor/initiation
c = SuperClass()
k = SubClass()
## Calling class methods
c.superMethod()
k.superMethod()
k.subMethod()
), Der self
Parameter implizit geben.
Mein Verständnis der self
Schlüsselwort ist es nicht anders als die this
Zeiger in C++, während es einen Verweis auf die Klasseninstanz bietet. Ist das richtig?
Wenn es immer eine aktuelle Instanz geben würde (in diesem Fall SubClass
), warum muss self
explizit in den Aufruf von SuperClass.__init__(self)
aufgenommen werden? Da
Dank