如何在2.x中重载Python的__bool__方法?

52 投票
1 回答
26705 浏览
提问于 2025-04-17 10:31

我本以为这个应该输出“假”,为什么它输出的是“真”?

>>> 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类型之前就已经存在很多年了。

撰写回答