什么时候可以自我==无

时间:2017-12-17 21:02:13

标签: python nonetype truthiness

我正在查看an answer to another question中实现if not self:的代码段__nonzero__()

这让我感到疑惑:除了__nonzero__()返回False或琐碎的本地作业self = None之外,还有其他情况,其中条件if not self是真的吗? / p>

1 个答案:

答案 0 :(得分:2)

根据Python关于truth value testing的文档:

  

可以测试任何对象的真值,以便在ifwhile中使用   条件或下面布尔运算的操作数。

     

默认情况下,除非其类定义,否则将对象视为true   返回False__bool__()方法的__len__()方法   当用对象调用时返回零。

在您引用的代码中,__nonzero__()是Python 2的等效于Python 3的__bool__()

因此,您问题中__bool__()方法的替代方法可能类似于:

class Lenny:

    def __len__(self):
        return 0 if self.value == '#' else len(self.children)

注意:这些与您的问题标题没有任何关系:“何时可以自我==无”。 Equality (无论是None还是其他任何内容)是与真值不同的概念,由__eq__()方法定义:

class Nonelike:

    def __eq__(self, other):
        return other == None