如何重载Python的__bool__方法?

div*_*ero 45 python methods overloading magic-methods

可能重复:
在python中定义类的"boolness"

我认为这应该打印"False",为什么打印"True"?

>>> class Foo(object):
...   def __bool__(self):
...     return False
... 
>>> f = Foo()
>>> if f:
...   print "True"
... else:
...   print "False"
... 
True
>>>
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 81

你应该__nonzero__()在Python 2.x中定义.它只__bool__()在Python 3.x中重命名.(该名称__nonzero__()实际上早于该bool类型的引入多年.)