2014-02-21 89 views
1

我有多个类,所有从一个单一的基类继承,这里是一个简单的例子:确定Python类类型与继承类

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

如果我想,以确定是否这些类类型的DataSource ,我想我可以做到以下几点:

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

所以我回来这里假的,我怎么能检查所有我的课,从数据源继承的数据源类型的对象,而不必检查每个类类型特别?这将使检查对象类型更容易在其他功能。

谢谢。

回答

5

is的事情是,它是测试如果两个对象引用相同的事情。 DataSource该类是一个对象。因此,只有引用DataSource本身的东西才会比较真实。你应该使用的是isinstance这样的:

isinstance(x, DataSource) 
+0

谢谢,你的工作就像一个魅力。 –

4

使用isinstance

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

对于类使用issubclass

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

这个答案也适用,谢谢你,但有人首先打你! –

+0

@ josh1234令人震惊的是,时间戳完全相同。 :) –