[Python] invocare super.setup automaticamente

Valerio Maggio valerio.maggio a gmail.com
Ven 8 Nov 2013 11:26:05 CET


On 08 Nov 2013, at 10:43, Simone Federici <s.federici a gmail.com> wrote:

> Beh, se ci pensi, in una qualche maniera ha definito proprio il decoratore che suggerivi (vedi wraps… :-)
> Super cool.. :-)
> 
> Giuro che so leggere :-D
> 

Ma certo..voleva solo essere un ulteriore appunto, nulla di più :-)

> Però lo fa su tutti i metodi, anzi su tutti i callable quindi compresi gli attributi = Class giusto per fare un esempio.

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.
Altrimenti, vai di decoratore… in questo caso, forse, sarebbero soluzioni equivalenti.

> 
> Inoltre invoca il super prima, ma se lo volessimo invocare dopo o peggio in mezzo?

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à
e semplicità di implementazione.

> 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

Sul livello didattico, non sono d'accordo. Meta-class programming è un paradigma a se.. ci sono tonnellate di letteratura a riguardo.
> 
> @callsuper lo preferisco :-)

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 
le meta-classi non sarebbero state di aiuto, al contrario di quanto subodorato da Marco sin dall'inizio.

Nessuno però ha mai parlato di quale sia la soluzione migliore (in generale o nel caso specifico).
Probabilmente, dipende anche da fattori di "gusti personali"..

> qualche implementazione fornite dai google friends:
> http://snipperize.todayclose.com/snippet/py/Decorator-for-calling-the-super-method-automagically.--24988/
> http://anybox.fr/blog/calling-super-from-a-method-decorator

Davvero molto interessanti! Grazie per lo share !-)

--
valerio


-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20131108/aedef644/attachment-0001.html>


Maggiori informazioni sulla lista Python