2009-11-03 2 views
8

Учитывая объект, как определить, является ли это классом и подклассом данного класса Foo?Что такое эквивалент isubclass isinstance в python?

например.

class Bar(Foo): 
    pass 

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

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

Ничего себе, хорошо, что вы не просто попытались запустить это в интерпретаторе Python, это могло бы полностью обжарить ваш компьютер! ;-) – nikow

+0

doh! я чувствую себя глупо сейчас :) –

+3

Просто заметьте: в большинстве случаев люди хотят проверять типы, что они действительно хотят сделать, это проверить, были ли реализованы необходимые методы ... – elzapp

ответ

22

Это работает точно так же, как можно было бы ожидать, что она работает ...

class Foo(): 
    pass 

class Bar(Foo): 
    pass 

class Bar2(): 
    pass 

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

Если вы хотите знать, если экземпляр класса, производного от данного базового класса, вы могли бы использовать :

bar_instance = Bar() 
print issubclass(bar_instance.__class__, Foo) 
Смежные вопросы