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

E.B*_*ach 4 python types

这与另一个问题类似,但在这种情况下,我想了解两个相同但动态创建的类类型之间的类型比较.

考虑一下这个SO问题的一个例子:

class SecretBaseClass(object):
    pass

class Class(object):
    pass

ClassType1 = type(Class.__name__, (SecretBaseClass,), dict(Class.__dict__))
ClassType2 = type(Class.__name__, (SecretBaseClass,), dict(Class.__dict__))
Run Code Online (Sandbox Code Playgroud)

如果我那么做:

print ClassType1 == ClassType2
Run Code Online (Sandbox Code Playgroud)

我的结果是假的.

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

jon*_*rpe 6

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