2013-04-09 2 views
5

タイプがPythonのタイプのサブタイプであるかどうかを確認する方法はありますか?私は型のインスタンスを参照するのではなく、型インスタンス自体を比較しています。たとえば、タイプがPythonのタイプのサブタイプであるかどうかを確認するにはどうすればいいですか?

class A(object): 
    ... 

class B(A): 
    ... 

class C(object) 
    ... 

# Check that instance is a subclass instance: 
isinstance(A(), A) --> True 
isinstance(B(), A) --> True 
isinstance(C(), A) --> False 

# What about comparing the types directly? 
SOME_FUNCTION(A, A) --> True 
SOME_FUNCTION(B, A) --> True 
SOME_FUNCTION(C, A) --> False 

答えて

16

issubclass

>>> class A(object): pass 
>>> class B(A): pass 
>>> class C(object): pass 
>>> issubclass(A, A) 
True 
>>> issubclass(B, A) 
True 
>>> issubclass(C, A) 
False 
関連する問題