根据Python的真值测试文档:
可以测试任何对象的真值,用在
if
或while
条件中或用作以下布尔运算的操作数。默认情况下,除非对象的类定义了与该对象一起调用时
__bool__()
返回False
的__len__()
方法或返回零的方法,否则该对象被视为true 。
在您引用的代码中,__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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句