2006世界杯巴西

crontab -e 定时任务文件保存及查看地方

一墨滢一:

hack一下:

[code=python]

class A:

def __len__(self):

return 1

a = A()

print(bool(a))

if a:

print('ok')

[/code]

文中出现的报错并不是因为没有定义__bool__,而是因为:我们尝试把对象a(类型是A)转化为布尔型,所以python先尝试调用了对象a的__bool__方法,发现__bool__方法不存在,于是调用了__len__方法,而文中的__len__方法返回值为None(因为没有return语句 执行完函数自动返回了None),所以解释器尝试把None作为数字处理(TypeError: 'NoneType' object cannot be interpreted as an integer),这才产生了报错。

也就是说,是否报错对于bool方法和len方法来说是一个或运算,二者之间只要有一个有、或者都有,就不会报错,只有二者都不存在,才会报错。当然如果bool方法和len方法的返回值错误(bool限定返回布尔值 len限定返回int),那么即便两个方法都存在,也会报错。

Copyright © 2088 世界杯预选赛南美_决赛世界杯 - scbfjc.com All Rights Reserved.
友情链接