我正在查看另一个实现的问题的答案if not self:
中的片段。__nonzero__()
这让我想知道:除了__nonzero__()
返回False
或琐碎的局部赋值之外self = None
,还有其他情况,其中条件if not self
为真?
我正在查看另一个实现的问题的答案if not self:
中的片段。__nonzero__()
这让我想知道:除了__nonzero__()
返回False
或琐碎的局部赋值之外self = None
,还有其他情况,其中条件if not self
为真?
根据 Python 的真值测试文档:
可以测试任何对象的真值,用于
if
orwhile
条件或作为以下布尔运算的操作数。默认情况下,一个对象被认为是真,除非它的类定义了一个
__bool__()
返回的方法False
或一个__len__()
返回零的方法,当与该对象一起调用时。
在您引用的代码中,__nonzero__()
Python 2 相当于 Python 3 的__bool__()
.
因此,您问题中方法的替代__bool__()
方法可能是:
class Lenny:
def __len__(self):
return 0 if self.value == '#' else len(self.children)
注意:这些都与您的问题标题无关:“何时可以自我 == 无”。平等(无论是否平等None
)是与真值不同的概念,由以下__eq__()
方法定义:
class Nonelike:
def __eq__(self, other):
return other == None