seba v triede Python

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. S elf> 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 Pythonu car> predstavujúce autá s atribútmi „model“ a „farba“. The __init__> konštruktor inicializuje tieto atribúty pre každú inštanciu. The show> 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>

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