概念:
__len__ :判断对象长度,在调用内联函数len()时被调用
__bool__ :判断对象类型的方法
案例1:
class Test():
pass
print(bool(Test()))
结果:True
案例2:
class Test():
def __len__(self):
return 0
print(bool(Test()))
结果:False
案例3:
class Test():
def __len__(self):
return 0
print(bool(Test()))
结果:True
案例4:
class Test():
def __len__(self):
return True
print(len(Test()))
print(bool(Test()))
结果:1 True
案例5:
class Test():
pass
print(len(Test())) #报错
print(bool(Test()))
案例6:
class Test():
def __bool__(self):
return False
print(bool(Test()))
结果:False
案例7:
class Test():
def __bool__(self):
print('1')
return False
def __len__(self):
print('2')
return True
print(bool(Test()))
结果:1 False
总结:在判断对象的返回值时一定要留意该方法是由具体的方法决定