<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On 08 Nov 2013, at 10:43, Simone Federici <<a href="mailto:s.federici@gmail.com">s.federici@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto;">
<div>Beh, se ci pensi, in una qualche maniera ha definito proprio il decoratore che suggerivi (vedi wraps… :-)</div><div>Super cool.. :-)</div></blockquote></div><br><div>Giuro che so leggere :-D</div><div><br></div></div></div></blockquote><div><br></div><div>Ma certo..voleva solo essere un ulteriore appunto, nulla di più :-)</div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div>
</div><div>Però lo fa su tutti i metodi, anzi su tutti i callable quindi compresi gli attributi = Class giusto per fare un esempio.</div></div></div></blockquote><div><br></div><div>Si, è chiaro… ma infatti dipende dal caso d'uso specifico.. se il comportamento di invocazione della superclasse deve essere *sempre* effettuato per ogni metodo ridefinito, così fai molto prima e bene.</div><div>Altrimenti, vai di decoratore… in questo caso, forse, sarebbero soluzioni equivalenti.</div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div><br></div><div>Inoltre invoca il super prima, ma se lo volessimo invocare dopo o peggio in mezzo?</div></div></div></blockquote><div><br></div><div>Si, vero.. il comportamento di invocazione del super è unico e univoco per tutti i callable.. se volessi avere ordini di invocazione differenti, nel tuo caso la definizione di un nuovo decoratore vince in flessibilità</div><div>e semplicità di implementazione.</div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra">
<div>insomma fa qualcosa per me in modo odisamente trasparente, le metaclassi sono fantastiche, mi piace tanto a livello didattico ma non lo utilizzerei mai :-D</div></div></div></blockquote><div><br></div><div>Sul livello didattico, non sono d'accordo. Meta-class programming è un paradigma a se.. ci sono tonnellate di letteratura a riguardo.</div><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div><br></div><div>@callsuper lo preferisco :-)</div></div></div></blockquote><div><br></div><div>Beh, alla fine credo che lo spirito della risposta di Enrico sia stato più che altro quello di "smentire" la mia iniziale osservazione (btw, sono contento che l'abbia fatto!) che </div><div>le meta-classi non sarebbero state di aiuto, al contrario di quanto subodorato da Marco sin dall'inizio.</div><div><br></div><div>Nessuno però ha mai parlato di quale sia la soluzione migliore (in generale o nel caso specifico).</div><div>Probabilmente, dipende anche da fattori di "gusti personali"..</div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra">
<div>qualche implementazione fornite dai google friends:</div><div><a href="http://snipperize.todayclose.com/snippet/py/Decorator-for-calling-the-super-method-automagically.--24988/">http://snipperize.todayclose.com/snippet/py/Decorator-for-calling-the-super-method-automagically.--24988/</a><br>
</div><div><a href="http://anybox.fr/blog/calling-super-from-a-method-decorator">http://anybox.fr/blog/calling-super-from-a-method-decorator</a><br></div></div></div></blockquote><div><br></div><div>Davvero molto interessanti! Grazie per lo share !-)</div></div><br><div>
--<br>valerio<br><br>
</div>
<br></body></html>