A Byte of Python

Self

I metodi delle classi hanno una differenza fondamentale rispetto alle funzioni ordinarie: richiedono necessariamente un parametro extra, da aggiungere per primo alla lista dei parametri da passare, a cui non deve essere attribuito nessun valore; sarà Python a fornirlo. Questa variabile speciale punta all'oggetto medesimo e, per convenzione, è stata chiamata self.

Sebbene sia possibile assegnare un nome arbitrario a questo parametro, è fortemente raccomandato l'uso di self, anche per permettere a chiunque legga il programma di riconoscerlo immediatamente, nonché sfruttare le funzioni di help degli ambienti IDE (Integrated Development Environments) che così possono interpretarlo automaticamente e correttamente.

Nota per programmatori C++/Java/C#

L'equivalente di self in Python è il puntatore self in C++ e il reference this in Java e C#.

Sapere che ci pensa Python ad assegnare un valore a self potrebbe sembrare strano, ma un esempio può chiarire questo punto. Supponiamo di avere una classe chiamata MyClass e un' istanza di questa classe chiamata MyObject. Quando si richiama un metodo di tale oggetto, ad esempio con MyObject.method(arg1, arg2), Python effettua la conversione MyClass.method(MyObject, arg1, arg2) attraverso self.

Ciò significa che anche se abbiamo un metodo che non richiede argomenti, è comunque necessario includere l'argomento self nella definizione del metodo.