Hlavní navigace

Názor ke článku Roury mezi objekty v Pythonu od Pavel Císař - [2] Ono není přetěžování operátorů jako přetěžování operátorů,...

  • 15. 3. 2007 17:28

    Pavel Císař (neregistrovaný)

    [2] Ono není přetěžování operátorů jako přetěžování operátorů, a v tomto případě jde spíš o jeho specifikaci než přetěžování, protože uživatelské objekty standardně operaci OR nepodporují (třída object nemá implementaci metody __or__).

    Naopak bych to viděl jako silnou stránku Pythonu. Pouhou implementací metody __iter__ dosáhnu toho, že libovolná třída podporuje iteraci ve smyčkách, implementací __or__ a podobných metod zase dosáhnu toho, že objekt třídy lze použít v jiných konstrukcích, můžu definovat pravidla pro porovnávání apod. Vedle hračiček typu roura je to použitelné především pro usnadnění a zpřehlednění tvorby komplexních seskupení objektů. Nádherným příkladem je např. modul pyparsing.