|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
[Python] metodi di utilità - questione stilistica
supponiamo di avere una classe in cui alcuni metodi fanno uso di un piccolo blocco di codice comune.
Tale pezzetto di codice è talmente insignificante che appare brutto inserirlo tra i metodi della classe stessa, ma è anche talmente legato alla classe che appare ancora più brutto definirlo al di fuori della classe. sarebbe bello definirlo attraverso una lambda function interna alla classe, ma andrebbe comunque chiamato come self.lambda_function non esiste un modo per definire un blocco di codice internamente a una classe in modo da poterlo richiamare SOLO ALL'INTERNO DELLA CLASSE usando soltanto il suo nome senza una reference alla classe o a una sua istanza? grazie mille Ultima modifica di mad_hhatter : 05-06-2008 alle 19:36. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Purtroppo no.
Python si affida allo scope per andare a recuperare le variabili o le funzioni a cui accedere, ma dentro una classe lo scope serve soltanto per dichiarare gli elementi che appartengono alla classe. Per utilizzarli si deve sempre far riferimento a self, cls oppure specificare la classe stessa, perché in mancanza di ciò lo scope rimane quello del metodo (suppongo) all'interno del quale si vorrebbe far uso di questa funzione "anonima"; e i metodi in Python sono equivalenti alle funzioni, dunque sono disponibili soltanto le variabili in essa dichiarate (o in funzioni esterne).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Se proprio quella funzione da fastidio che si veda, non esportarla dal modulo. Se non ti basta puoi sempre "wrappare" tutto in una funzione che ritorni la classe, ma e' come tagliarsi una mano per un'unghia incarnita.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
grazie a tutti.
alla fine ho fatto un metodino all'interno della classe: metterlo all'esterno nel modulo era ancora peggio e poi per 2 (letteralmente) righe di codice non vale la pena farsi troppe pippe grazie ancora |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:20.



















