重写一个类的布尔判断值
有时会需要自定义的控制一个对象的布尔判断值,有两个方案可以实现
重写 __nonzero__
方法或者重写 __zero__
方法
1. 重写 __nonzero__
方法
Python 2.7 可以,3.7 不行
class TrueBool(object):
"""布尔值为真举例"""
def __nonzero__(self):
return True # 1 也行,一个 bool 值为真的就可以
class FalseBool(object):
"""布尔值为假举例"""
def __nonzero__(self):
return False # 0 也行,一个 bool 值为假的就可以
if __name__ == '__main__':
print(bool(TrueBool()))
print(bool(FalseBool()))
2. 重写 __len__
方法
Python 2/3 都可以
class TrueBool:
"""布尔值为真举例"""
def __len__(self):
return 1 # 一个 bool 值为真的就可以
class FalseBool:
"""布尔值为假举例"""
def __len__(self):
return 0 # 一个 bool 值为假的就可以
if __name__ == '__main__':
print(bool(TrueBool()))
print(bool(FalseBool()))