web-dev-qa-db-fra.com

Comment surcharger la méthode __bool__ de Python?

Duplicata possible:
définition de la "boolness" d'une classe en python

Je pensais que cela devrait imprimer "False", pourquoi est-il imprimé "True"?

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

Vous devez définir __nonzero__() dans Python 2.x. Il a seulement été renommé en __bool__() dans Python 3. x. (Le nom __nonzero__() est en fait antérieur à l'introduction du type bool de nombreuses années.)

78
Sven Marnach