A Byte of Python

El paràmetre self

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.

Nota pels programadors de C++/Java/C#

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.