sebe ve třídě Pythonu

Self představuje instanci třídy. Pomocí self můžeme přistupovat k atributům a metodám třídy v Krajta . Sváže atributy s danými argumenty. Důvod, proč musíte používat sebe. je to proto, že Python nepoužívá syntaxi @ k odkazování na atributy instance. Krajta rozhodli udělat metody způsobem, který zajistí, že instance, ke které metoda patří, bude automaticky předána, ale nebude automaticky přijata: prvním parametrem metod je instance, na které je metoda volána.

Jaké je použití self v Pythonu?

Při práci s třídami v Pythonu se termín self vztahuje k instanci třídy, která se aktuálně používá. Je obvyklé používat self jako první parametr v metodách instance třídy. Kdykoli zavoláte metodu objektu vytvořeného z a třída , je objekt automaticky předán jako první argument pomocí parametru self. To vám umožní upravit vlastnosti objektu a provádět úkoly jedinečné pro danou konkrétní instanci.

Python3




class> mynumber:> > def> __init__(> self> , value):> > self> .value> => value> > > def> print_value(> self> ):> > print> (> self> .value)> obj1> => mynumber(> 17> )> obj1.print_value()>

Výstup:

17 

Vlastní konstruktor třídy Python

Při práci s třídami je důležité pochopit, že v Pythonu je konstruktor třídy speciální pojmenovaná metoda __horký__ který se volá, když vytvoříte instanci (objekt) třídy. Tato metoda se používá k inicializaci atributů objektu. Mějte na paměti, že parametr self v konstruktoru odkazuje na vytvářenou instanci a umožňuje přístup k jejím atributům a jejich nastavení. Dodržováním těchto pokynů můžete v Pythonu vytvářet výkonné a efektivní třídy.

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ýstup:

Maths Science 

Je self v Pythonu klíčové slovo?

Ne, 'sebe' není klíčové slovo v Pythonu. S elf> je pouze název parametru používaný v metodách instance k odkazování na samotnou instanci.

Jasnějším způsobem můžete říci, že JÁ má následující charakteristiku-

Self: Ukazatel na aktuální objekt

Já vždy ukazuje na Aktuální objekt. Když vytváříte instanci třídy, v podstatě vytváříte objekt s vlastní sadou atributů a metod.

Python3




class> check:> > def> __init__(> self> ):> > print> (> 'Address of self = '> ,> id> (> self> ))> obj> => check()> print> (> 'Address of class object = '> ,> id> (obj))>

Výstup:

Address of self = 140273244381008 Address of class object = 140273244381008 

Příklad: Vytvoření třídy s atributy a metodami

Tento kód definuje třídu Pythonu car> představující vozy s atributy „model“ a „barva“. The __init__> konstruktor inicializuje tyto atributy pro každou instanci. The show> metoda zobrazuje model a barvu, zatímco přímý přístup k atributům a volání metod demonstrují načítání dat specifické pro instanci.

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ýstup:

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 

Já v konstruktorech a metodách

Já je prvním argumentem, který je třeba předat Konstruktér a Instance Method.Self musí být poskytnuty jako první parametr pro metodu instance a konstruktor. Pokud jej nezadáte, způ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>

Já: Konvence, ne klíčové slovo

Já je konvence a ne klíčové slovo Python . Self je parametr v metodě instance a uživatel může místo něj použít jiný název parametru. Ale je vhodné používat self, protože to zvyšuje čitelnost kódu a je to také dobrá programovací praxe.

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ýstup:

we have used another parameter name in place of self