Els mètodes tenen una única diferència respecte a les funcions: han de contenir un paràmetre extra. Ha d'aparèixer a la primera posició de la llista de paràmetres, però no se li ha de passar un valor en cridar el procediment. Python se n'encarrega de passar el valor d'aquest argument quan es crida al mètode.
Aquest paràmetre es refereix a la instància de l'objecte
pròpiament i, per convenció, té com a nom self
.
Malgrat podem donar-li qualsevol altre nom, es desaconsella.
L'ús del nom self
té molts avantatges - tothom que miri
el nostre programa ho reconeixerà immediatament, i alguns entorns de desenvolupament
integrats (IDEs) especialitzats en donen suport quan el fem
servir.
L'ús de self
a Python és equivalent a l'ús del punter
self
a C++, i a la referència this
de Java i C#.
Potser ens preguntarem com pot Python donar el valor per self
i perquè no ens cal fer-ho nosaltres. Un exemple ens ho aclarirà. Diguem que
disposem d'una classe anomenada MyClass
i una instància
de la classe anomenada MyObject
. Quan cridem a un mètode
d'aquest objecte com MyObject.method(arg1, arg2)
, aquesta
crida es converteix automàticament en MyClass.method(MyObject, arg1, arg2
.
I això és tot el que té d'especial el paràmetre self
.
Això implica també que si tenim un mètode sense paràmetres, sempre haurem
de definir el mètode amb el paràmetre self
.