Self predstavlja primerek razreda. Z uporabo selfa lahko dostopamo do atributov in metod razreda v Python . Povezuje atribute z danimi argumenti. Razlog, zakaj morate uporabiti sebe. ker Python ne uporablja sintakse @ za sklicevanje na atribute primerka. Python odločil, da bo izvajal metode na način, da bo instanca, ki ji metoda pripada, samodejno posredovana, vendar ne prejeta samodejno: prvi parameter metod je instanca, na kateri je metoda klicana.
Kakšna je uporaba self-a v Pythonu?
Pri delu z razredi v Pythonu se izraz self nanaša na primerek razreda, ki se trenutno uporablja. Običajno je, da se self uporablja kot prvi parameter v metodah primerka razreda. Kadarkoli pokličete metodo predmeta, ustvarjenega iz a razred , je predmet samodejno posredovan kot prvi argument z uporabo parametra self. To vam omogoča, da spremenite lastnosti predmeta in izvedete naloge, edinstvene za ta določen primerek.
Python3
ukaz arp-a
class> mynumber:> >def> __init__(>self>, value):> >self>.value>=> value> > >def> print_value(>self>):> >print>(>self>.value)> obj1>=> mynumber(>17>)> obj1.print_value()> |
>
>
Izhod:
17>
Samokonstruktor razreda Python
Ko delate z razredi, je pomembno razumeti, da je v Pythonu konstruktor razreda posebna metoda z imenom __vroče__ ki se pokliče, ko ustvarite primerek (predmet) razreda. Ta metoda se uporablja za inicializacijo atributov predmeta. Upoštevajte, da se parameter self v konstruktorju nanaša na primerek, ki se ustvarja, in vam omogoča dostop do njegovih atributov in nastavitev. Z upoštevanjem teh smernic lahko ustvarite močne in učinkovite razrede v Pythonu.
Python3
rimske številke 1100
class> Subject:> >def> __init__(>self>, attr1, attr2):> >self>.attr1>=> attr1> >self>.attr2>=> attr2> obj>=> Subject(>'Maths'>,>'Science'>)> print>(obj.attr1)> print>(obj.attr2)> |
>
>
Izhod:
Maths Science>
Je self v Pythonu ključna beseda?
ne, 'sebe' ni a ključna beseda v Pythonu. Self>je samo ime parametra, ki se uporablja v metodah primerka za sklicevanje na sam primerek.
Na bolj jasen način lahko rečete, da ima JAZ naslednje značilnosti-
Self: kazalec na trenutni predmet
Jaz vedno kaže na trenutni objekt. Ko ustvarite primerek razreda, v bistvu ustvarite predmet z lastnim nizom atributov in metod.
Python3
class> check:> >def> __init__(>self>):> >print>(>'Address of self = '>,>id>(>self>))> obj>=> check()> print>(>'Address of class object = '>,>id>(obj))> |
>
>
Izhod:
java objekt
Address of self = 140273244381008 Address of class object = 140273244381008>
Primer: Ustvarjanje razreda z atributi in metodami
Ta koda definira razred Pythoncar>predstavljanje avtomobilov z atributoma 'model' in 'barva'. The__init__>konstruktor inicializira te atribute za vsak primerek. Theshow>metoda prikazuje model in barvo, medtem ko neposredni dostop do atributa in klici metod prikazujejo pridobivanje podatkov, specifično za primerek.
Python3
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)> |
>
>
Izhod:
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 v konstruktorjih in metodah
Self je prvi argument, ki ga je treba posredovati Konstruktor in Instance Method.Self je treba zagotoviti kot prvi parameter za metodo in konstruktor primerka. Če tega ne zagotovite, bo prišlo do napake.
Python3
# 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> |
tiskanje izjave v Javi
>
>
Jaz: dogovor, ne ključna beseda
Sebstvo je konvencija in ne Ključna beseda Python . Self je parameter v metodi primerka in uporabnik lahko namesto njega uporabi drugo ime parametra. Priporočljivo pa je, da uporabite self, ker poveča berljivost kode in je tudi dobra programska praksa.
Python3
preity zinta
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()> |
>
>
Izhod:
we have used another parameter name in place of self>