我认为这应该打印“False”,为什么打印“True”?
>>> class Foo(object):
... def __bool__(self):
... return False
...
>>> f = Foo()
>>> if f:
... print "True"
... else:
... print "False"
...
True
>>>
答案 0 :(得分:73)
您应该在Python 2.x中定义__nonzero__()
。它只在Python 3.x中重命名为__bool__()
。 (名称__nonzero__()
实际上早于bool
类型的引入多年。)