Mam funkcję, która akceptuje klasę (nie instancję) i, w zależności od tego, czy jest to określona klasa , czy podklasa tej, muszę przekazać do jednej z dwóch innych (fabrycznych) funkcji fabrycznych.Jak stwierdzić, czy klasa pochodzi od innej klasy?
(Aby zapobiec zastrzeżeń, jestem świadomy tego nie jest bardzo pythonowy, ale jestem uzależniony od tego, co biblioteka innych firm akceptuje.)
issubclass
działa tylko do przypadków, nie sprzeciwia się klasa. Przypuszczam, że mógłbym utworzyć instancję klasy, zrobić issubclass
i wyrzucić instancję, ale wydaje się to trochę marnotrawstwem.
Oto, co robię w tej chwili, korzystając z wbudowanego atrybutu mro, aby stwierdzić, czy dana klasa znajduje się na liście przodków mojej klasy. Czy to jest bezpieczne i czy istnieje lepszy sposób na zrobienie tego?
if GenericClass in myclass.__mro__:
result = generic_factory(myclass)
else:
result = other_factory(myclass)
Aargh byłem myląc go z isinstance. Dzięki. –