um alles zu verdeutlichen habe ich mir ein Beispiel programmiert
Code: Alles auswählen
class basis(object):
def __init__(self):
print("Basisklasse")
class sub(basis):
def __init__(self):
super(sub, self).__init__()
print("Subklasse")
a = sub()
die Ausgabe
warum muss ich hier in der funktion die sub klasse angeben und auch self? Es würde viel logischer, anstatt sub, basis anzugeben, wegen die Mehrfachvererbung, damit der Compiler weiss, welche Basisklasse gemeint ist.
ein zweiter Versuch
Code: Alles auswählen
class basis(object):
def __init__(self):
print("Basisklasse")
class sub(basis):
def __init__(self):
super(basis, self).__init__()
print("Subklasse")
a = sub()
die ausgabe
die ausgabe ist nur subklasse..ahhh ist logisch, der compiler sucht ja nach der superklasse von basis.
noch ein dritter versucht
Code: Alles auswählen
class basis(object):
def __init__(self):
print("Basisklasse")
class sub(basis):
def __init__(self):
super.__init__()
print("Subklasse")
a = sub()
warum erscheint eine fehlermeldung
Code: Alles auswählen
TypeError: descriptor '__init__' of 'super' object needs an argument
File "/Volumes/Develop/excourse.py", line 10, in <module>
a = sub()
File "/Volumes/Develop/excourse.py", line 7, in __init__
super.__init__()