2009-11-03 6 views
8

Podany obiekt, jak sprawdzić, czy jest to klasa i podklasa danej klasy Foo?Co to jest issubclass odpowiednik isinstance w python?

np.

class Bar(Foo): 
    pass 

isinstance(Bar(), Foo) # => True 

issubclass(Bar, Foo) # <--- how do I do that? 
+24

Wow, dobrze, że nie próbowałaś tego uruchamiać w interpreterze Pythona, mogła całkowicie usmażyć komputer! ;-) – nikow

+0

doh! Czuję się głupio teraz :) –

+3

Po prostu Uwaga: Większość ludzi chce sprawdzić typy, co naprawdę chcą zrobić, to sprawdzić, czy wymagane metody są realizowane ... – elzapp

Odpowiedz

22

To działa dokładnie tak, jak można by się spodziewać, że do pracy ...

class Foo(): 
    pass 

class Bar(Foo): 
    pass 

class Bar2(): 
    pass 

print issubclass(Bar, Foo) # True 
print issubclass(Bar2, Foo) # False 

Jeśli chcesz wiedzieć, czy instancja klasy pochodzącego z danej klasy bazowej, można użyć :

bar_instance = Bar() 
print issubclass(bar_instance.__class__, Foo)