Pats apzīmē klases gadījumu. Izmantojot sevi, mēs varam piekļūt klases atribūtiem un metodēm Python . Tas saista atribūtus ar norādītajiem argumentiem. Iemesls jums ir jāizmanto pats. Tas ir tāpēc, ka Python neizmanto @ sintaksi, lai atsauktos uz gadījumu atribūtiem. Python nolēma veikt metodes tā, lai instancē, kurai šī metode pieder, tiktu automātiski nodota, bet ne automātiski saņemta: pirmais metožu parametrs ir gadījums, kad metode tiek izsaukta.
Kāda ir sevis izmantošana Python?
Strādājot ar klasēm Python, termins self attiecas uz pašlaik izmantoto klases gadījumu. Klases gadījumu metodēs ir ierasts izmantot sevi kā pirmo parametru. Ikreiz, kad izsaucat no a izveidotā objekta metodi klasē , objekts tiek automātiski nodots kā pirmais arguments, izmantojot pašparametru. Tas ļauj mainīt objekta rekvizītus un izpildīt uzdevumus, kas ir unikāli šim konkrētajam gadījumam.
Python3
class> mynumber:> >def> __init__(>self>, value):> >self>.value>=> value> > >def> print_value(>self>):> >print>(>self>.value)> obj1>=> mynumber(>17>)> obj1.print_value()> |
>
java nomaiņas virkne
>
Izvade:
17>
Python klases paškonstruktors
Strādājot ar klasēm, ir svarīgi saprast, ka Python klasē klases konstruktors ir īpaša metode ar nosaukumu __karsts__ kas tiek izsaukts, kad veidojat klases gadījumu (objektu). Šo metodi izmanto, lai inicializētu objekta atribūtus. Ņemiet vērā, ka pašparametrs konstruktorā attiecas uz veidojamo gadījumu un ļauj piekļūt un iestatīt tā atribūtus. Ievērojot šīs vadlīnijas, programmā Python varat izveidot jaudīgas un efektīvas klases.
Python3
class> Subject:> >def> __init__(>self>, attr1, attr2):> >self>.attr1>=> attr1> >self>.attr2>=> attr2> obj>=> Subject(>'Maths'>,>'Science'>)> print>(obj.attr1)> print>(obj.attr2)> |
>
>
pilns papildinātājs
Izvade:
Maths Science>
Vai Python es pats ir atslēgvārds?
Nē, ‘pats’ nav a atslēgvārds programmā Python. Self>ir tikai parametra nosaukums, ko izmanto instanču metodēs, lai atsauktos uz pašu gadījumu.
Skaidrākā veidā jūs varat teikt, ka SELF ir šādas īpašības:
Pats: rādītājs uz pašreizējo objektu
Pats vienmēr norāda uz pašreizējo objektu. Kad veidojat klases gadījumu, jūs būtībā izveidojat objektu ar savu atribūtu un metožu kopu.
Python3
class> check:> >def> __init__(>self>):> >print>(>'Address of self = '>,>id>(>self>))> obj>=> check()> print>(>'Address of class object = '>,>id>(obj))> |
>
>
Izvade:
Address of self = 140273244381008 Address of class object = 140273244381008>
Piemērs: klases izveide ar atribūtiem un metodēm
Šis kods definē Python klasicar>apzīmē automašīnas ar atribūtiem 'modelis' un 'krāsa'. The__init__>konstruktors inicializē šos atribūtus katrai instancei. Theshow>metode parāda modeli un krāsu, savukārt tiešā atribūtu piekļuve un metožu izsaukumi demonstrē gadījumam raksturīgu datu izguvi.
Python3
foreach java
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)> |
>
>
Izvade:
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>
Sevis konstruktoros un metodēs
Pats ir pirmais arguments, kas jānodod Konstruktors un Instance Method.Self ir jānorāda kā pirmais instances metodes un konstruktora parametrs. Ja jūs to nenorādīsit, tas radīs kļūdu.
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> |
drukāšanas paziņojums java
>
fizzbuzz java
>
Pats: konvencija, nevis atslēgvārds
Pats ir vienošanās, nevis a Python atslēgvārds . Self ir Instance Method parametrs, un lietotājs tā vietā var izmantot citu parametra nosaukumu. Bet ir ieteicams izmantot sevi, jo tas palielina koda lasāmību, un tā ir arī laba programmēšanas prakse.
Python3
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()> |
>
>
Izvade:
we have used another parameter name in place of self>