类布尔值

Python 2.x <= 2.7

在 Python 2 中,如果要自己定义类的布尔值,则需要在类上实现 __nonzero__ 方法。默认情况下,该值为 True。

class MyClass:
    def __nonzero__(self):
        return False

my_instance = MyClass()
print bool(MyClass)       # True
print bool(my_instance)   # False

Python 3.x >= 3.0

在 Python 3 中,使用 __bool__ 而不是 __nonzero__

class MyClass:
    def __bool__(self):
        return False

my_instance = MyClass()
print(bool(MyClass))       # True
print(bool(my_instance))   # False