Seite 1 von 1

Verständnisfrage bei Klassen

Verfasst: Mittwoch 12. Juli 2017, 15:37
von Bindl
Hi zusammen,

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()
Die Ausgabe:
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

Re: Verständnisfrage bei Klassen

Verfasst: Mittwoch 12. Juli 2017, 15:42
von __deets__
Was glaubst du denn ist der Sinn in der Definition von C zu schreiben

Code: Alles auswählen

class C(B)
Analog fuer B.

Warum tust du das, und was ist das fuer ein Feature? Das beantwortet dann auch die Frage.

Re: Verständnisfrage bei Klassen

Verfasst: Mittwoch 12. Juli 2017, 15:57
von Bindl
Hi,
das sind nur Verständisübungen aus meiner Uni.

Heißt das das die Klasse C die eigenen Funktionen und die Funktionen der Klasse B inne hat?
Hat die Klasse C dann auch die Funktionen der Klasse A, wegen B(A) ?

Wenn ja, bedeutet das wenn man

Code: Alles auswählen

d = D()
    d.func()
hat, da erst "geguckt" wird ob die Klasse D die Funktion func() selbst hat und wenn nicht würde Sie in der Klasse B "nachgucken" , wegen D(B)?

Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt :)

Re: Verständnisfrage bei Klassen

Verfasst: Mittwoch 12. Juli 2017, 15:59
von __deets__
Ja, das heisst das.

Re: Verständnisfrage bei Klassen

Verfasst: Mittwoch 12. Juli 2017, 16:07
von Bindl
Danke