使用继承类确定Python类的类型

时间:2014-02-21 18:39:40

标签: python oop

我有多个类都继承自单个基类,这是一个简单的例子:

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

如果我想确定这些类是否属于DataSource类型,我想我可以执行以下操作:

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

所以我在这里回到假,如何检查从DataSource继承的所有类是否都是数据源类型对象,而不必专门检查每个类类型?它将使得在未来的其他功能中更容易检查对象类型。

谢谢。

2 个答案:

答案 0 :(得分:6)

关于is的事情是它正在测试两个对象是否引用相同的东西。 DataSource该类是一个对象。因此,只有引用DataSource本身的东西才会比较真实。您应该使用的是isinstance,如下所示:

  isinstance(x, DataSource)

答案 1 :(得分:4)

使用isinstance

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

对于课程使用issubclass

>>> issubclass(TableDataSource, DataSource)
True