gpt4 book ai didi

python - 为什么 NotImplemented 评估为 True?

转载 作者:太空狗 更新时间:2023-10-29 22:15:59 26 4
gpt4 key购买 nike

我最近偶然发现了 Python 的 NotImplemented 内置函数。经过一些阅读后,我现在确实明白了它的目的,但我不明白为什么它会评估为 True 作为 bool 值。下面的例子让我觉得这是一个残酷的笑话:

>>> class A:
... def __eq__(self, other):
... return NotImplemented
...
>>>
>>> a = A()
>>> a == 1
False
>>> bool(a.__eq__(1))
True

我的问题很简单:为什么 NotImplemented 的计算结果为 True

最佳答案

因为它的计算结果不是False默认 是考虑所有对象 True 除非它们有 length of 0 (容器),或 are zero (数字);查看Truth Value Testing reference .

但是,向 Python 返回 NotImplemented 信号表明没有实现相等性测试,并且逆向 (1).__eq__(a)改为尝试。如果该方法也不存在,则如果对象不是同一对象(a 为 1False),则对象不相等。

换句话说,NotImplemented 是一个特殊的单例对象,它是一个向 Python 发出信号的哨兵,表明您希望 Python 尝试其他操作,因为不支持此对象与另一个对象之间的相等性测试。

因此,它永远不会用于 bool 上下文。它绝不意味着传达 False

关于python - 为什么 NotImplemented 评估为 True?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23397956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com