2009-11-03 1 views
8

주어진 객체가 있다면, 클래스인지, 주어진 클래스의 서브 클래스인지 어떻게 알 수 있습니까?python에서 isinstance와 동일한 issubclass는 무엇입니까?

class Bar(Foo): 
    pass 

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

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

와우, 당신이 파이썬 인터프리터에서 이것을 실행하려고 시도하지 않았 더라면, 그것은 완전히 당신의 PC를 튀길 수 있었을 것입니다! ;-) – 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)