:PROPERTIES:
:ID:       5803422c-c089-4369-93cc-80caca71a26b
:mtime:    20220528173751
:ctime:    20220528161514
:END:
#+title: La méthode __bool__

* Synthaxe
#+BEGIN_SRC python
object.__bool__(self)
#+END_SRC
La méthode ~object.__bool__~ :
 * “Any object can be tested for truth value, for use in an if or while condition or as operand of the Boolean operations below [or, and and not].”,
 * Un objet est /Falsy/ lorsqu'il est /empty/ ou /without any useful value/,
 * Est appelée par la fonction /built-in/ /bool/.

* Exemples
#+BEGIN_SRC python :results output
print(f'{bool(None) = }')

print(f'{bool([]) = }')
print(f'{bool([None]) = }')

print(f'{bool({}) = }')

#+END_SRC
#+RESULTS:
: bool(None) = False
: bool([]) = False
: bool([None]) = True
: bool({}) = False

 * Par défaut, les instances de classes retournent /True/ :
#+BEGIN_SRC python :results output
class Dummy:
    pass

print(f'{bool(Dummy()) = }')
#+END_SRC
#+RESULTS:
: bool(Dummy()) = True

#+BEGIN_SRC python :results output
class Dummy:

    def __bool__(self) -> bool:
        return False

print(f'{bool(Dummy()) = }')
#+END_SRC
#+RESULTS:
: bool(Dummy()) = False

* Références
 * [[https://mathspp.com/blog/pydonts/truthy-falsy-and-bool][Truthy falsy and bool - Pydon't]]

