Self predstavuje inštanciu triedy. Pomocou self môžeme pristupovať k atribútom a metódam triedy v Python . Spája atribúty s danými argumentmi. Dôvod, prečo musíte používať seba. je to preto, že Python nepoužíva syntax @ na odkazovanie na atribúty inštancie. Python sa rozhodol robiť metódy spôsobom, ktorý spôsobí, že inštancia, ku ktorej metóda patrí, bude automaticky odovzdaná, ale nie automaticky prijatá: prvým parametrom metód je inštancia, na ktorú sa metóda volá.
Aké je použitie seba v Pythone?
Pri práci s triedami v Pythone sa pojem self vzťahuje na inštanciu triedy, ktorá sa práve používa. V metódach inštancie triedy je obvyklé používať self ako prvý parameter. Kedykoľvek zavoláte metódu objektu vytvoreného z a trieda , objekt sa automaticky odovzdá ako prvý argument pomocou parametra self. To vám umožňuje upravovať vlastnosti objektu a vykonávať úlohy jedinečné pre túto konkrétnu inštanciu.
Python3
class> mynumber:> >def> __init__(>self>, value):> >self>.value>=> value> > >def> print_value(>self>):> >print>(>self>.value)> obj1>=> mynumber(>17>)> obj1.print_value()> |
>
>
Výkon:
17>
Vlastný konštruktor triedy Python
Pri práci s triedami je dôležité pochopiť, že v Pythone je konštruktor triedy špeciálna metóda s názvom __horúce__ ktorý sa zavolá, keď vytvoríte inštanciu (objekt) triedy. Táto metóda sa používa na inicializáciu atribútov objektu. Majte na pamäti, že parameter self v konštruktore odkazuje na inštanciu, ktorá sa vytvára, a umožňuje vám pristupovať a nastavovať jej atribúty. Dodržiavaním týchto pokynov môžete v Pythone vytvárať výkonné a efektívne triedy.
Python3
class> Subject:> >def> __init__(>self>, attr1, attr2):> >self>.attr1>=> attr1> >self>.attr2>=> attr2> obj>=> Subject(>'Maths'>,>'Science'>)> print>(obj.attr1)> print>(obj.attr2)> |
>
>
Výkon:
Maths Science>
Je self v Pythone kľúčové slovo?
nie, „seba“ nie je a kľúčové slovo v Pythone. Self>je len názov parametra používaný v metódach inštancie na odkazovanie na samotnú inštanciu.
Jasnejším spôsobom môžete povedať, že JA má nasledujúcu charakteristiku:
Self: Ukazovateľ na aktuálny objekt
Ja vždy ukazuje na Aktuálny objekt. Keď vytvoríte inštanciu triedy, v podstate vytvárate objekt s vlastnou sadou atribútov a metód.
Python3
class> check:> >def> __init__(>self>):> >print>(>'Address of self = '>,>id>(>self>))> obj>=> check()> print>(>'Address of class object = '>,>id>(obj))> |
>
>
Výkon:
Address of self = 140273244381008 Address of class object = 140273244381008>
Príklad: Vytvorenie triedy s atribútmi a metódami
Tento kód definuje triedu Pythonucar>predstavujúce autá s atribútmi „model“ a „farba“. The__init__>konštruktor inicializuje tieto atribúty pre každú inštanciu. Theshow>metóda zobrazuje model a farbu, zatiaľ čo priamy prístup k atribútom a volania metódy demonštrujú získavanie údajov špecifických pre inštanciu.
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)> |
>
>
Výkon:
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>
Ja v konštruktéroch a metódach
Ja je prvým argumentom, ktorý treba odovzdať Konštruktér a Instance Method.Self musia byť poskytnuté ako prvý parameter pre metódu a konštruktor Instance. Ak ho neposkytnete, spôsobí to chybu.
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> |
>
azúrové predplatné
>
Ja: Konvencia, nie kľúčové slovo
Ja je konvencia a nie a Kľúčové slovo Python . Self je parameter v metóde inštancie a používateľ môže namiesto neho použiť iný názov parametra. Ale je vhodné použiť self, pretože to zvyšuje čitateľnosť kódu a je to tiež dobrá programátorská prax.
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()> |
>
>
Výkon:
we have used another parameter name in place of self>