ich habe ein paar Klassen und rufe diese per Funktion auf.
Die Ausgabe verwundert mich jedoch etwas.
Hier mal der Quelltext:
Code: Alles auswählen
class A:
def func(self):
print("A::func()")
def gulb(self, x):
x = x - 1
print("x=", x)
class B(A):
def func(self):
print("B::func()")
class C(B):
def gulb(self, x):
x = x + 1
print("x=", x)
class D(B):
def func(self):
print("D::func()")
def main():
a = A()
a.func()
a.gulb(5)
b = C()
b.func()
b.gulb(6)
d = D()
d.func()
d.gulb(8)
main()
A::func()
x= 4
B::func()
x= 7
D::func()
x= 7
Also die Ausgabe 1 & 2 verstehe ich.
Dann würde ich eine Fehlermeldung erwarten, da b = C(). Also hat b die Funktionen (hier nur eine) inne und es gibt bei der Klasse C keine Funktion func().
Wieso wird dann die Funktion func() der Klasse B ausgeführt?
Die Klasse D hat ja keine Funktion gulb(), wieso wird dann dann keine Fehler ausgegeben und stattdessen die glub() Funktion aus der Klasse C verwendet?
Hoffe mich kann da jmd aufklären