Linearisierung Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pascal96
User
Beiträge: 3
Registriert: Mittwoch 28. Dezember 2016, 23:19

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'>)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Antworten