如何在Python2.5中检查类的相等性?

如何在Python2.5中检查类的相等性?,python,class,equality,python-2.5,Python,Class,Equality,Python 2.5,我查阅了Python2.5文档,但找不到答案:如何检查一个对象是否与另一个对象是同一个类 def IsClass(obj1, obj2): return obj1.class == obj2.class #doesn't work 你可以用 type(obj1) is type(obj2) 请注意,您通常试图避免在Python中进行类型检查,而是依赖于。我认为您要做的是使用类型(obj)。:) -编辑-看起来他比我快。关于鸭子打字,他是对的 最后一句应该用黑体字。如果markdow

我查阅了Python2.5文档,但找不到答案:如何检查一个对象是否与另一个对象是同一个类

def IsClass(obj1, obj2):
     return obj1.class == obj2.class #doesn't work
你可以用

type(obj1) is type(obj2)

请注意,您通常试图避免在Python中进行类型检查,而是依赖于。

我认为您要做的是使用类型(obj)。:)


-编辑-看起来他比我快。关于鸭子打字,他是对的

最后一句应该用黑体字。如果markdown支持,则为红色。这件事太过分了。如果你相信你需要这个,你最有可能不应该也应该只使用鸭拴。当你关心实际类型时,你也应该考虑使用<代码> iSub类(< /代码>或<代码> ISSnntThans>>(),因为在大多数情况下,当你寻找一个<代码> FoO 时,你也会接受一个子类:<代码> FoO 。但是您还记得您用来测试答案的Python版本吗?也许你应该加上一个大大的注释,答案可能不适用于其他版本。例如,它不适用于Python2.7(截至2016年,许多系统的默认版本)。但它确实适用于Python3.4和3.5。@m000:这在Python2.7中肯定有效。它实际上应该在任何Python版本中都能工作。请注意,这将检查类型标识,在大多数情况下,这不是您想要的。也请阅读关于这个答案的前两条评论。@SvenMarnach问题似乎是新旧样式的类。我使用了这个测试代码:对于Python2.7,
type(obj)
comparison只适用于新样式的类。也就是说,您的类必须扩展
对象
。自python 2.2以来,旧式类已被取代,但在使用它们时解释器没有发出警告。比较
\uuuuuuuuuuuuuuuuuuuuuuuuu类
属性似乎与类的样式无关。