关于python:对象类型是__eq __,__ ne__,__ hash__属性?

Are __eq__, __ne__, __hash__ attributes of object type?

在下面的属性列表中,

ZZU1

EDOCX1-0、EDOCX1-1和EDOCX1-2不显示为属性。它们是元类EDOCX1的属性

ZZU1

而EDOCX1-4与EDOCX1-3不在EDOCX1-5关系中。

ZZU1

但是,我看到这些属性是EDOCX1的一部分

ZZU1

这允许

ZZU1-4型

覆盖这些属性。

问题:

这些是EDOCX1到4的属性吗?


type中的方法定义类的行为,object中的方法实现实例的行为。

使用您的object子类:

1
2
class X(object):
    pass

然后

1
X == X

将呼叫type.__eq__(X, X)

但是:

1
X() == X()

将呼叫object.__eq__(X, X)

至少,只要你不重写这些神奇的方法(直接在你的X中,或者当你为X定义你自己的元类时)。

如果您"进入元",那么重要的是要知道元类对类是什么,实例对类是什么:

1
2
3
4
5
>>> isinstance(object, type)   # class & metaclass
True

>>> isinstance(X(), X)         # instance & class
True


它们是数据模型定制的一部分,称为"magic methods",您必须将它们视为与Python功能交互的接口。这是所有与此相关的文档。