2014-02-21 4 views
1

나는 모두가 여기에 하나의 기본 클래스에서 상속, 여러 클래스는 간단한 예제가 있습니다상속 클래스와 파이썬 클래스 '유형 결정

class DataSource(object): 
    pass 
class TableDataSource(DataSource): 
    pass 

나는 이러한 클래스 유형의 데이터 소스의 있는지 확인하려면 데이터 소스에서 상속 내 모든 클래스는 데이터 소스 유형 오브젝트는 특히 각 클래스 유형을 확인하지 않고 있다면 내가 확인 할 수있는 방법,

>>> tdl = TableDataSource() 
>>> print tdl is DataSource 
False 

그래서 내가 여기 다시 거짓 얻을 : 나는 다음 할 수있는 생각? 그것은 도로 아래 다른 기능에 대한 개체 유형을 쉽게 확인하게됩니다.

감사합니다.

답변

5

일들은 두 객체가 같은 일을 참조하는 경우에 검사 점이다. DataSource 클래스는 개체입니다. 따라서 DataSource을 참조하는 내용 만이 true를 비교합니다. 이 답변뿐만 아니라 일

isinstance(x, DataSource) 
+0

감사합니다. 당신은 매력처럼 일했습니다. –

4

사용 isinstance : 클래스에 대한

>>> tdl = TableDataSource() 
>>> isinstance(tdl, DataSource) 
True 

issubclass를 사용 is에 대한

>>> issubclass(TableDataSource, DataSource) 
True 
+0

이뿐만 아니라, 감사합니다,하지만 누군가가 먼저 포인트를 이길 : 당신은 무엇을 사용해야하는 것은이 같은 isinstance입니다! –

+0

@ josh1234 놀랍게도 타임 스탬프는 정확히 동일합니다. :) –

관련 문제