Self reprezentuje instancję klasy. Używając self, możemy uzyskać dostęp do atrybutów i metod klasy w Pyton . Wiąże atrybuty z podanymi argumentami. Powód, dla którego musisz użyć self. Dzieje się tak dlatego, że Python nie używa składni @ w odniesieniu do atrybutów instancji. Pyton postanowiliśmy zrobić metody w taki sposób, aby instancja, do której dana metoda należy, była przekazywana automatycznie, ale nie odbierana automatycznie: pierwszym parametrem metod jest instancja, w której metoda jest wywoływana.
Do czego służy self w Pythonie?
Podczas pracy z klasami w Pythonie termin self odnosi się do instancji aktualnie używanej klasy. Zwyczajowo używa się self jako pierwszego parametru w metodach instancji klasy. Ilekroć wywołujesz metodę obiektu utworzonego z a klasa , obiekt jest automatycznie przekazywany jako pierwszy argument przy użyciu parametru self. Dzięki temu możesz modyfikować właściwości obiektu i wykonywać zadania specyficzne dla tej konkretnej instancji.
Python3
class> mynumber:> >def> __init__(>self>, value):> >self>.value>=> value> > >def> print_value(>self>):> >print>(>self>.value)> obj1>=> mynumber(>17>)> obj1.print_value()> |
>
>
Wyjście:
17>
Konstruktor własny klasy Pythona
Podczas pracy z klasami ważne jest, aby zrozumieć, że w Pythonie konstruktor klas to specjalna metoda o nazwie __gorący__ która jest wywoływana, gdy tworzysz instancję (obiekt) klasy. Ta metoda służy do inicjowania atrybutów obiektu. Należy pamiętać, że parametr self w konstruktorze odnosi się do tworzonej instancji i umożliwia dostęp do jej atrybutów oraz ustawianie ich. Postępując zgodnie z tymi wskazówkami, możesz tworzyć potężne i wydajne klasy w Pythonie.
Python3
class> Subject:> >def> __init__(>self>, attr1, attr2):> >self>.attr1>=> attr1> >self>.attr2>=> attr2> obj>=> Subject(>'Maths'>,>'Science'>)> print>(obj.attr1)> print>(obj.attr2)> |
>
>
Wyjście:
Maths Science>
Czy self w Pythonie jest słowem kluczowym?
NIE, ' samego siebie ' nie jest słowo kluczowe w Pythonie. Self>to po prostu nazwa parametru używana w metodach instancji w celu odniesienia się do samej instancji.
sortuj listę tablic w Javie
W bardziej przejrzysty sposób można powiedzieć, że SELF ma następującą cechę:
Self: Wskaźnik do bieżącego obiektu
Jaźń zawsze wskazuje na Bieżący Obiekt. Tworząc instancję klasy, zasadniczo tworzysz obiekt z własnym zestawem atrybutów i metod.
Python3
class> check:> >def> __init__(>self>):> >print>(>'Address of self = '>,>id>(>self>))> obj>=> check()> print>(>'Address of class object = '>,>id>(obj))> |
>
>
Wyjście:
Address of self = 140273244381008 Address of class object = 140273244381008>
Przykład: Tworzenie klasy z atrybutami i metodami
Ten kod definiuje klasę Pythonacar>reprezentujące samochody z atrybutami „model” i „kolor”. The__init__>konstruktor inicjuje te atrybuty dla każdej instancji. Theshow>Metoda wyświetla model i kolor, podczas gdy bezpośredni dostęp do atrybutów i wywołania metod demonstrują pobieranie danych specyficznych dla instancji.
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)> |
>
>
Wyjście:
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>
Self w konstruktorach i metodach
Self jest pierwszym argumentem, który należy przekazać Konstruktor i Instance Method.Self należy podać jako pierwszy parametr metody Instance i konstruktora. Jeśli go nie podasz, spowoduje to błąd.
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> |
>
>
Self: Konwencja, a nie słowo kluczowe
Jaźń jest konwencją, a nie a Słowo kluczowe w Pythonie . Self jest parametrem w metodzie instancji i użytkownik może zamiast niego użyć innej nazwy parametru. Zaleca się jednak używanie self, ponieważ zwiększa to czytelność kodu, a także jest dobrą praktyką programistyczną.
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()> |
>
>
Wyjście:
we have used another parameter name in place of self>