web-dev-qa-db-ja.com

Pythonの__bool__メソッドをオーバーロードする方法は?

可能性のある複製:
Pythonでクラスの「ブール値」を定義する

これは「False」と印刷する必要があると思いましたが、なぜ「True」と印刷するのですか?

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

Python 2.xで__nonzero__()を定義する必要があります。これは、Python 3.で__bool__()に名前が変更されただけです。 x。(名前__nonzero__()は、実際にはbool型の導入より何年も前から存在しています。)

78
Sven Marnach