51 votes

Comment surcharger la méthode __bool__ de Python ?

Duplicata possible : définir « boolness » d'une classe en python

J'ai pensé que cela devrait imprimer "False", pourquoi imprime-t-il "True" ?

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

98voto

Sven Marnach Points 133943

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X