如何区分类的实例和普通的数据类型int / bool / float / etc

时间:2012-09-07 14:41:41

标签: python python-2.7

在python中我试图通过一个对象wo(用户定义)进行集成,而wo.obj是另一个用户定义的对象,我怎么告诉它是一个类的实例而不是普通的数据类型?

type(wo.obj)
<class '__main__.test'>

type(wo.obj) is types.InstanceType
False

type(wo.obj) is types.ClassType
False

1 个答案:

答案 0 :(得分:3)

要检查实例是否在特定类中,您可以使用isinstance:

mc = MyClass()
isinstance(mc, MyClass) # True

注意:对于子类,它是True,还有一些其他的怪癖,请参阅this answer类似的问题。

如果您只是检查type,无论哪个“用户定义”类都是实例,您都会看到结果为<type 'instance'>

type(notmc).__name__ == 'instance' #True

我怀疑这应该带有某种形式的健康警告,因为检查该类是否是实例类型似乎不是一个非常密集的检查。

相关问题