El jo representa la instància de la classe. Mitjançant el self podem accedir als atributs i mètodes de la classe en Python . Enllaça els atributs amb els arguments donats. El motiu pel qual necessiteu utilitzar-vos a vosaltres mateixos. és perquè Python no utilitza la sintaxi @ per referir-se als atributs de la instància. Python va decidir fer mètodes d'una manera que fa que la instància a la qual pertany el mètode es passi automàticament, però no es rebi automàticament: el primer paràmetre dels mètodes és la instància a la qual es crida el mètode.
Quin és l'ús de self a Python?
Quan es treballa amb classes en Python, el terme self fa referència a la instància de la classe que s'està utilitzant actualment. És habitual utilitzar self com a primer paràmetre en els mètodes d'instància d'una classe. Sempre que crideu a un mètode d'un objecte creat a partir d'a classe , l'objecte es passa automàticament com a primer argument mitjançant el paràmetre self. Això us permet modificar les propietats de l'objecte i executar tasques úniques per a aquesta instància concreta.
Python 3
class> mynumber:> >def> __init__(>self>, value):> >self>.value>=> value> > >def> print_value(>self>):> >print>(>self>.value)> obj1>=> mynumber(>17>)> obj1.print_value()> |
>
>
Sortida:
17>
Autoconstructor de classe Python
Quan es treballa amb classes, és important entendre que a Python, un constructor de classes és un mètode especial anomenat __calent__ que es crida quan creeu una instància (objecte) d'una classe. Aquest mètode s'utilitza per inicialitzar els atributs de l'objecte. Tingueu en compte que el paràmetre self del constructor fa referència a la instància que s'està creant i us permet accedir i establir els seus atributs. Seguint aquestes directrius, podeu crear classes potents i eficients en Python.
Python 3
col·leccions en java
class> Subject:> >def> __init__(>self>, attr1, attr2):> >self>.attr1>=> attr1> >self>.attr2>=> attr2> obj>=> Subject(>'Maths'>,>'Science'>)> print>(obj.attr1)> print>(obj.attr2)> |
>
>
Sortida:
Maths Science>
Self a Python és una paraula clau?
No, 'auto' no és un paraula clau en Python. Self>és només un nom de paràmetre utilitzat en mètodes d'instància per referir-se a la instància mateixa.
D'una manera més clara podeu dir que SELF té les següents Característiques:
Self: punter a l'objecte actual
El jo sempre apunta a l'objecte actual. Quan creeu una instància d'una classe, bàsicament esteu creant un objecte amb el seu propi conjunt d'atributs i mètodes.
Python 3
mitjana vs mitjana
class> check:> >def> __init__(>self>):> >print>(>'Address of self = '>,>id>(>self>))> obj>=> check()> print>(>'Address of class object = '>,>id>(obj))> |
git pull origin master
>
>
Sortida:
Address of self = 140273244381008 Address of class object = 140273244381008>
Exemple: Creació de classes amb atributs i mètodes
Aquest codi defineix una classe Pythoncar>representant cotxes amb els atributs ‘model’ i ‘color’. El__init__>El constructor inicialitza aquests atributs per a cada instància. Elshow>El mètode mostra el model i el color, mentre que l'accés directe als atributs i les trucades al mètode demostren la recuperació de dades específiques de la instància.
Python 3
class> car():> > ># init method or constructor> >def> __init__(>self>, model, color):> >self>.model>=> model> >self>.color>=> color> > >def> show(>self>):> >print>(>'Model is'>,>self>.model )> >print>(>'color is'>,>self>.color )> > # both objects have different self which contain their attributes> audi>=> car(>'audi a4'>,>'blue'>)> ferrari>=> car(>'ferrari 488'>,>'green'>)> audi.show()># same output as car.show(audi)> ferrari.show()># same output as car.show(ferrari)> print>(>'Model for audi is '>,audi.model)> print>(>'Colour for ferrari is '>,ferrari.color)> |
>
>
Sortida:
Model is audi a4 color is blue Model is ferrari 488 color is green Model for audi is audi a4 Colour for ferrari is green>
Self en Constructors i Mètodes
El jo és el primer argument que es transmet Constructor i Instance Method.Self s'ha de proporcionar com a primer paràmetre al mètode Instance i al constructor. Si no el proporcioneu, provocarà un error.
Python 3
# Self is always required as the first argument> class> check:> >def> __init__():> >print>(>'This is Constructor'>)> object> => check()> print>(>'Worked fine'>)> # Following Error is produced if Self is not passed as an argument> Traceback (most recent call last):> >File> '/home/c736b5fad311dd1eb3cd2e280260e7dd.py'>, line>6>,>in> > >object> => check()> TypeError: __init__() takes>0> positional arguments but>1> was given> |
java privat vs públic
>
>
Self: convenció, no paraula clau
El jo és una convenció i no un Paraula clau de Python . Self és un paràmetre del Mètode de la instància i l'usuari pot utilitzar un altre nom de paràmetre en lloc d'ell. Però s'aconsella utilitzar self perquè augmenta la llegibilitat del codi, i també és una bona pràctica de programació.
Python 3
class> this_is_class:> >def> __init__(in_place_of_self):> >print>(>'we have used another '> >'parameter name in place of self'>)> > object> => this_is_class()> |
Com obtenir el joc Pigeon a Android
>
>
Sortida:
we have used another parameter name in place of self>