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
metoda podřetězce java
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. Self>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))> |
sousední úhly
>
>
Výstup:
Address of self = 140273244381008 Address of class object = 140273244381008>
Příklad: Vytvoření třídy s atributy a metodami
diana ankudinová
Tento kód definuje třídu Pythonucar>představující vozy s atributy „model“ a „barva“. The__init__>konstruktor inicializuje tyto atributy pro každou instanci. Theshow>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
nejkrásnější úsměv
# 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>