Dne 7.5.2012 23:09, Martin Stiborský napsal(a): > Ahoj, > řekl jsem si, že pro jednu situaci by se mi docela hodil dekorátor, že > by to bylo hezké a vůbec mi to přišlo jako dobrý nápad. > Je to asi poprvé co tenhle syntactic sugar někde vážně používám, takže > jsem s tím trochu bojoval. > Můj dekorátor funguje uvnitř třídy, může si šáhnout na self a bere > argumenty, takže přesně to, co jsem po něm chtěl. > > Akorát mi pořád hlava nebere to dvojité zanoření metod (dvojité aby > fungoval ten parametr, došel jsem k tomu víceméně přes pokus-omyl). > Chtěl bych vás poprosit o vysvětlení, co a jak se tam děje, koukám na > to, ale nevím.
Pokud nema dekorat parametry, pak @d def f(...): ... je ekvivalent def f(...): f = d(f) Pokud ale muze mit parametry, pak @d(p) def f(...): je ekvivalent def f(...): _d = d(p) f = _d(f) tj. d neni v podstate primo dekorator, ale tovarna, ktera dekorator vytvori (1. vnoreni) a ten pak vetsinou obsahuje wrapper puvodni funkce (2. vnoreni) def d(parametr): # tovarna def vlastni_dekorator(puvodni_funkce): def obalka(): puvodni_funkce() return obalka return vlastni_dekorator -- Zdraví, Michal Molhanec _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python