Miért hasznos, hogy az objektumoknak van igazságértéke?

A Pythonban minden objektum rendelkezik logikai igaz vagy hamis értékkel. Ez azt jelenti, hogy bármely objektumra elvégezhető a logikai értékvizsgálat. Egy objektum logikai értékét közvetlenül úgy kérdezhetjük le, hogy a vizsgált objektumot a bool() konstruktor zárójelei közé írjuk, és ennek eredményeképpen True vagy False értéket kapunk.

Alapértelmezésben minden objektum logikai igaz (True) értékkel rendelkezik. Ez alól kivételt képeznek:

  • Az üres konténerek. Pl.: ”, (), [], {}, set(), frozenset(), bytes(), bytearray(), range(0).
  • Bármelyik számtípus nulla értéke. Pl.: 0, 0.0, 0j, 0e0.
  • A None és False konstansok, vagy ezeket eredményező kifejezések.
  • Azok a saját készítésű objektumok, amelyeket a definíciójukban szándékosan False értékre állítunk a __bool__ metódus felülírásával.

Azzal, hogy az objektumok önmagukban is rendelkeznek igazságértékkel egyszerűsíthetjük a kódot és csökkenthetjük a hibázás lehetőségét. Ezt szemlélteti a következő példaprogram.

Az 1. Megoldásban nem használtuk ki a konténerek és azok elemeinek igazságértékét sem a while ciklus leállási feltételében, sem az első if feltételének meghatározásakor. A 2. Megoldásban viszont kihasználtuk mindkét esetben, és látható, hogy kevesebbet kellett gépelni, ami a hibalehetőséget csökkenti, és egyszerűsödött a feltételek kódja, ami így jobban áttekinthető.

A __bool__ metódus felülírásával kapcsolatos tudnivalókról a Python tudásépítés lépésről lépésre című e-könyv „Konténerek megvalósítása” fejezetében tájékozódhatunk.

Érdekel a Python tudásépítés lépésről lépésre az alapoktól az első asztali alkalmazásig című e-könyv.