布尔数,__nonzero__()

  • 有两个永不改变的值 True 或 False
  • 布尔型是整型的子类,但是不能再被继承而生成它的子类
  • 没有 __nonzero__() 方法的读写的默认值是 True
  • 对于值为零的任何数字或空集(空列表,空元组和空字典等)在 Python 中布尔值都是 False
  • 在数学运算中,Boolean 值的 True 和 False 分别对应与 1 和 0
"""无__nonzero__()"""
class A:
    pass

print 'A is not zero' if A() else 'A is zero'       #output: A is not zero
a = A()
print bool(a)         #output: True
print bool(A)         #output: True
print bool(A())       #output: True
"""重载 __nonzero__"""
class B:
    def __nonzero__(self):
        print 'B.__nonzero__()'
        return False

if __name__ == '__main__':
    print 'B is not zero' if B() else 'B is zero'
    b = B()             #output: B.__nonzero__(), B is zero
    print bool(b)       #output: B.__nonzero__(), False
    print bool(B)       #output: True
    print bool(B())     #output: B.__nonzero__(),False
原文地址:https://www.cnblogs.com/Roger1227/p/3073538.html