如何在2.x中重载Python的__bool__方法?
我本以为这个应该输出“假”,为什么它输出的是“真”?
>>> class Foo(object):
... def __bool__(self):
... return False
...
>>> f = Foo()
>>> if f:
... print "True"
... else:
... print "False"
...
True
>>>
1 个回答
100
在Python 2.x中,你应该定义__nonzero__()
这个方法。它在Python 3.x中被改名为__bool__()
。其实,__nonzero__()
这个名字在引入bool
类型之前就已经存在很多年了。