@jan.b: wie Du siehst kannst Du `x1.schreibe` aufrufen, also werden alle Methoden von überklasse an unterklasse1 vererbt. Da wird aber nichts auf magische Weise aufgerufen, sondern Du mußt das selbst machen. Stell Dir eine Klasse vor, die bei jedem Methodenaufruf alle Methoden der Überklasse aufruft? Mit welchen Parametern, wenn die Methoden Parameter brauchen? Du merkst hoffentlich selbst, dass das kein sinnvolles Verhalten einer Programmersprache wäre.
Code: Alles auswählen
class Überklasse:
def print(self):
print("ü1")
class Unterklasse1(Überklasse):
def print1(self):
print("u1")
self.print() # ruft eine Methode der Überklasse auf
Was Du wahrscheinlich eigentlich willst, ist das Überladen von Methoden, also eine Methode, die in der Unterklasse gleich heißt wie in der Überklasse. Da braucht man dann `super`:
Code: Alles auswählen
class Überklasse:
def print(self):
print("ü1")
class Unterklasse1(Überklasse):
def print(self):
print("u1")
super().print() # ruft eine Methode der Überklasse auf
@sls: `print` war in Python2 mal ein Keyword, inzwischen ist es eine ganz normale Funktion, so dass man sie auch ohne weiteres als Methoden-Namen verwenden kann.