self w klasie Pythona

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. S elf> to po prostu nazwa parametru używana w metodach instancji w celu odniesienia się do samej instancji.

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ę Pythona car> reprezentujące samochody z atrybutami „model” i „kolor”. The __init__> konstruktor inicjuje te atrybuty dla każdej instancji. The show> 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