相关疑难解决方法(0)

对象相等(`==`)的默认行为在哪里定义?

根据object.__eq__()文档,默认(即在object类中)实现==如下:

True if x is y else NotImplemented
Run Code Online (Sandbox Code Playgroud)

仍然遵循的文档NotImplemented,我推断这NotImplemented意味着 Python 运行时将尝试以相反的方式进行比较。y.__eq__(x)即如果x.__eq__(y)返回则尝试NotImplemented(在运算符的情况下==)。

现在,在 python 3.9 中False打印以下代码:True

class A:
   pass
print(A() == A())
print(bool(NotImplemented))
Run Code Online (Sandbox Code Playgroud)

所以我的问题如下:文档在哪里提到了NotImplemented在上下文中的特殊行为__eq__

PS:我在CPython 源代码中找到了答案,但我想这必须/应该在文档中的某个位置。

python python-datamodel python-internals

11
推荐指数
1
解决办法
1430
查看次数