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.
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.