Seite 1 von 1

Linearisierung Python

Verfasst: Sonntag 29. Januar 2017, 17:16
von Pascal96
Ich verstehe das Thema der Linearisierung nicht so ganz und habe nun folgende Aufgabe:

Code: Alles auswählen

Betrachten Sie den folgenden Python-Code:
class F: pass 
class G: pass 
class H: pass
class E(G,H): pass
class D(E,F): pass 
class C(E,G): pass
class B(C,H): pass
class A(D,B,E): pass
Ist es möglich, dass in der Linearisierung von A die Klasse E vor C vorkommt? Begründung!
Mit

Code: Alles auswählen

print(A.__mro__)
bekomme ich die MRO, das ist mir klar, jedoch verstehe ich trotzdem nicht, warum die Reihenfolge so ist?

Code: Alles auswählen

(<class '__main__.A'>, <class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.E'>, <class '__main__.G'>, <class '__main__.H'>, <class '__main__.F'>, <class 'object'>)

Re: Linearisierung Python

Verfasst: Sonntag 29. Januar 2017, 17:44
von DasIch
Die Reihenfolge ist so weil der Algorithmus dahinter, C3, diese so vorgibt. Selbst wenn du C3 nicht verstehst, sollten die Kriterien die C3 einhält, eigentlich ausreichend sein um die Frage zu beantworten wieso E vor C kommt.