Ich habe eine Funktion, die eine Klasse akzeptiert (keine Instanz) und, je nachdem, ob es eine bestimmte Klasse oder eine Unterklasse von dieser ist, muss ich übergeben es in einer von zwei anderen (dritten) Fabrikfunktionen ein.Wie man erkennt, ob eine Klasse von einer anderen Klasse abstammt
(Um Einwände vorwegzunehmen, ich bin mir bewusst, das nicht sehr Pythonic ist, aber ich bin davon abhängig, was die Drittanbieter-Bibliothek übernimmt.)
issubclass
nur für Instanzen arbeitet, nicht Klasse Objekte selbst. Ich nehme an, ich könnte die Klasse instanziieren, issubclass
tun und die Instanz wegwerfen, aber das scheint ein wenig verschwenderisch.
Hier ist, was ich im Moment mache, basierend auf dem eingebauten mro Attribut zu sagen, ob eine bestimmte Klasse in der Liste der Vorfahren meiner Klasse ist. Ist das sicher und gibt es einen besseren Weg?
if GenericClass in myclass.__mro__:
result = generic_factory(myclass)
else:
result = other_factory(myclass)
Aargh, ich war verwirrend es mit isinstance. Vielen Dank. –