如何重载Python的__bool__方法?

时间:2012-01-18 12:14:37

标签: python methods overloading magic-methods

  

可能重复:
  defining “boolness” of a class in python

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

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

1 个答案:

答案 0 :(得分:73)

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