Python中的非空字符串应具有truthy值。为什么如果显式调用__bool__()
函数,会出现错误?如果我使用if
语句,它似乎会进行计算
>>> myvar = 'test'
>>> myvar.__bool__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute '__bool__'
>>> if myvar:
... print("myvar TRUTHY")
...
myvar TRUTHY
>>>
字符串没有
__bool__()
方法(这是错误告诉您的)。相反,python将调用字符串上的__len__()
,如果它不是零,则返回True。作为python data model mentions:您可以通过创建
UserString
(或str
)的子类并注意调用__len__()
的时间来验证这一点。在布尔上下文中使用字符串时,将调用它:根据Python documentation,真值检验依赖于
__bool__
和__len__
方法。对于字符串,由于__bool__
方法未定义,字符串的真值取决于已定义的__len__
方法相关问题 更多 >
编程相关推荐