这与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
我的结果是假的。
我知道我创造了两种不同的类型,但对于人类来说它们是相同的。比较运算符在什么级别识别差异?
答案 0 :(得分:6)
如果您没有定义比较魔术方法__eq__
,a == b
的默认行为是id(a) == id(b)
,即是同一个对象。在这种情况下,他们不是;它们是两个独立的type
个对象。