布尔测试函数的重写
格式:
def __bool__(self):
….作用:
- 用于bool(boj)函数取值
- 用于if 语句真值表达式中
- 用于while语句的真值表达式中
- 说明:
- 当自定义类内有__bool__(self) 方法时, 此方法的返回作为bool(x)的返回值
- 当不存在__bool__(self)方法时,返回__len__(self)方法的返回值是否为非零来测试布尔值
- 当不存在__len__(self)方法时, 则直接返回True
class Mylist():
'''这是一个自定义的列表类型,此类型的对象是
用data属性绑定的列表来存储数据'''
def __init__(self, iterable=()):
self.data = [x for x in iterable]
def __repr__(self):
return 'Mylist(%s)' % self.data
def __len__(self):
print('__len__方法被调用')
return len(self.data)
def __bool__(self):
print('__bool__方法被调用')
return False # 无论什么都返回False
myl = Mylist([1, -2, 3, -4])
print(myl)
# 结果为 Mylist([1, -2, 3, -4])
print(bool(myl))
# 结果为
# __bool__方法被调用
# False
myl = Mylist([False, 0, 0.0])
print(myl)
# 结果为 Mylist([False, 0, 0.0])
print(bool(myl))
# 结果为
# __bool__方法被调用
# False