在什么情况下对象不等于自身?

dzi*_*iou 6 python

我在json/encoder.py模块中找到了以下几行:

if o != o:
   text = 'NaN'
Run Code Online (Sandbox Code Playgroud)

在什么情况下对象不等于自身?

luk*_*keg 7

这可能发生在符合 IEEE 754 标准的浮点数的情况下。请参阅为什么 NaN 不等于 NaN?

根据定义,NaN 值(“非数字”)不等于自身。


wja*_*rea 5

问题似乎是关于 NaN,但值得一提的是,您可以__eq__在自定义类中定义比较方法。

例如,您可以使其始终为 false:

class NotEqual:
    def __eq__(self, other):
        return False

n = NotEqual()
print(n == n)  # -> False
Run Code Online (Sandbox Code Playgroud)