比较python中两个动态创建的类类型

时间:2014-04-11 13:58:20

标签: python types

这与another question类似,但在这种情况下,我想了解两个相同但动态创建的类类型之间的类型比较。

考虑一下这个SO question的例子:

class SecretBaseClass(object):
    pass

class Class(object):
    pass

ClassType1 = type(Class.__name__, (SecretBaseClass,), dict(Class.__dict__))
ClassType2 = type(Class.__name__, (SecretBaseClass,), dict(Class.__dict__))

如果我这样做:

print ClassType1 == ClassType2

我的结果是假的。

我知道我创造了两种不同的类型,但对于人类来说它们是相同的。比较运算符在什么级别识别差异?

1 个答案:

答案 0 :(得分:6)

如果您没有定义比较魔术方法__eq__a == b的默认行为是id(a) == id(b),即是同一个对象。在这种情况下,他们不是;它们是两个独立的type个对象。