self什么时候可以==None

When can self == None

我正在查看 an answer to another question 中的片段 if not self:,它实现了 __nonzero__()

这让我想知道:除了 __nonzero__() 返回 False 或琐碎的局部赋值 self = None 之外,是否还有其他情况,条件 if not self 为真?

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

Any object can be tested for truth value, for use in an if or while condition or as operand of the Boolean operations below.

By default, an object is considered true unless its class defines either a __bool__() method that returns False or a __len__() method that returns zero, when called with the object.

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

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

class Lenny:

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

注:None与你的问题标题有很大关系:"When can self == None"。 平等(无论是 None 还是其他任何东西)是与 真值 不同的概念,由 [=25] 定义=]方法:

class Nonelike:

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