[python] Dekorátor

Radek radek.hnilica na gmail.com
Pondělí Únor 21 15:42:46 CET 2011


On 20 ún, 16:02, "Róbert Čerňanský" <hsli... na zoznam.sk> wrote:
> Dúfam, že som Ťa ešte viac nepoplietol. ;-)
> Robo

Dík za snahu, průběžně jsem ten dekorátor studoval z videozáznamů
přednášek co jsem našel, takže jsem se v tvé odpovědi
orientoval  .Takže ještě jednou dík.


ono u takovýchto jednoduchých pojmů, které velmi rychle vedou k hůře
pochopitelným abstrakcím, je dobrých příkladů vždycky málo.

Z toho co jsem četl, tak použítí třídy pro realizaci dekorátoru funkce
je způsob jak si udržet větší kontrolu nad kódem?
Můj puvodní dekorátor vypadal nějak takto:

class Authorize:
    def __init__ ...
    def __call__ ...
       def dekorovana_fce:
          ...

    def metoda_volana_z_dekorovana_fce:
    def jina_metoda_volana_z_dekorovana_fce:

Když jsem to všechno psal, popisoval a ladil, tak jsem to nakonec celé
refaktorizoval že tam ty další metody nezůstaly.  Prostě jsem si při
prvním programovacím pokusu nevšiml že to dělám složitě.  Ale s
dekorovanou fcí zacházím tak, jako by fungovala v kontextu třídy
dekorátoru, což taky funguje.
A teď to budu vylepšovat, protože jsem si uvědomil, že když dekoruji
metodu třídy, má fce kterou dekoruju jako první argument odkaz na
kontext té třídy.  Už jsem ho částečně použil a z dekorované funkce do
něj psal.



Další informace o konferenci Python