Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Pisząc zajęcia w Pythonie, często możesz spotkać się z terminem 'self.'Jest to kluczowa koncepcja, którą początkujący muszą zrozumieć, gdy zagłębiają się w funkcje zorientowane obiektowo w języku programowania Python.

Parametr selfodnosi się do bieżącej instancji klasy. Możesz go użyć, aby uzyskać dostęp do atrybutów i metod należących do tej klasy.

W tym samouczku Pythona przyjrzymy się, w jaki sposób selfzmienna odgrywa kluczową rolę w klasach Pythona. Pokażemy Ci również, jak zachować przejrzystość kodu, modułowość i możliwość ponownego użycia dzięki wykorzystaniu self.

Spis treści

Zrozumienie siebie w Pythonie

Python to język programowania zorientowanego obiektowo (OOP) , który w dużym stopniu opiera się na klasach i obiektach. Tak więc, zanim zagłębimy się w selfparametr, musimy najpierw zrozumieć, czym jest programowanie obiektowe.

Programowanie obiektowe w Pythonie

Czym jest self w Pythonie: przykłady z życia wziętePisanie kredą – OOP, programowanie obiektowe large-file="https://blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1.jpg" decoding="async" loading="leniwy" src="https: //blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1.jpg" alt="Czym jest Self w Pythonie." class="wp-image-206807" width=" 709" height="472" srcset="https://blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1.jpg 612w, https://blog.enterprisedna.co /wp-content/uploads/2023/04/istockphoto-147480805-612x612-1-300x200.jpg 300w, https://blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1-560x372.jpg 560w" size="(maks.szerokość: 709px) 100vw, 709px">

Programowanie zorientowane obiektowo pomaga programistom modelować rzeczywiste koncepcje i relacje za pomocą klas i obiektów. Powoduje to, że kod jest bardziej ustrukturyzowany, wielokrotnego użytku i skalowalny.

Pomyśl o klasie jako o szablonie do tworzenia obiektów o predefiniowanych właściwościach i metodach. Ponadto obiekt jest instancją klasy, która przechowuje własne wartości atrybutów i ma dostęp do funkcji klasowych.

Te dwie koncepcje są ważnym elementem składowym wielu aplikacji Pythona . Możesz zobaczyć zarówno klasy, jak i obiekty w pracy w tym filmie na temat łatwego tworzenia danych za pomocą Python Faker Library.

Rola samego Pythona

Self jest odwołaniem do instancji klasy w Pythonie. Umożliwia dostęp i modyfikację atrybutów i metod klasy w jej własnym zakresie.

Oto kilka kluczowych punktów dotyczących używania self w Pythonie:

  • Selfnie jest zastrzeżonym słowem kluczowym w składni Pythona . Możesz używać innych nazw do identyfikowania instancji klas, ale selfjest to najczęściej używana i akceptowana konwencja przez programistów Pythona.
  • Selfjest używany jako pierwszy parametr w metodach instancji w celu odniesienia do bieżącej instancji klasy.
  • Możesz użyć selfdo rozróżnienia atrybutów instancji i zmiennych lokalnych, dzięki czemu Twój kod będzie bardziej czytelny i mniej błędny.
  • Podczas wywoływania metody instancji Python automatycznie przekazuje instancję jako pierwszy parametr.
  • Musisz zadeklarować selfparametr w __init__() konstruktorze i wszystkich kolejnych konstruktorach funkcji w swojej klasie. Niezastosowanie się do tego spowoduje, że program wyrzuci plik typeerror.

    Poniżej możesz zobaczyć przykład tego błędu:

class Person: def __init__(self): print('welcome') def show_person(): print('I love pandas.') a = Person() b = a.show_person() Traceback (most recent call last): File "person.py", line 10, in trill = b.show_person() ^^^^^^^^^^^^^^^^^^ TypeError: Person.show_person() takes 0 positional arguments but 1 was given

Uwaga: Możesz obejść użycie self parametru w funkcjach, używając funkcji metody statycznej, którą zapewnia Python 3. Omówimy to bardziej szczegółowo w dalszej części.

Praca z samym sobą

Czym jest self w Pythonie: przykłady z życia wzięte

Nauka używania self jest bardzo ważna przy budowaniu klas w Pythonie. W tej sekcji dowiesz się, jak używać self w różnych scenariuszach podczas pracy z klasami i obiektami.

Inicjowanie obiektów za pomocą „__init__()”

Czym jest self w Pythonie: przykłady z życia wzięte

Podczas tworzenia nowej instancji klasy __init__() wywoływana jest metoda w celu zainicjowania atrybutów obiektu. Metoda __init__() jest konstruktorem klasy i przyjmuje self parametr jako pierwszy argument.

Parametr selfjest używany w tej metodzie do kojarzenia atrybutów instancji z podanymi argumentami.

Oto przykład:

class Person: def __init__(self, name, age): self.name = name self.age = age person1 = Person("Alice", 30)

W tym przykładzie metoda przyjmuje , i jako parametry podczas inicjalizacji obiektu. Parametr odnosi się do instancji klasy, umożliwiając ustawienie atrybutów i dla konkretnego tworzonego obiektu. init selfnameageself nameage

Korzystanie z własnych metod

Podczas definiowania metod instancji w klasie należy dołączyć self jako pierwszy parametr. Umożliwia to dostęp do atrybutów instancji i innych metod w klasie.

Rozwińmy poprzedni przykład:

class Person: def __init__(self, name, age): self.name = name self.age = age def introduce(self): print("Hello, my name is " + self.name + " and I'm " + str(self.age) + " years old.") person1 = Person("Alice", 30) person1.introduce()

W tym przykładzie introduce()metoda zawiera selfjako pierwszy parametr. Umożliwia to dostęp do atrybutów nazwy i wieku obiektu oraz utworzenie spersonalizowanego wprowadzenia.

Podczas wywoływania metody w kodzie nie trzeba self jawnie przekazywać parametru. Python zajmuje się tym automatycznie.

Postępując zgodnie z tymi wskazówkami i rozumiejąc cel selfPythona , początkujący mogą skutecznie pracować z klasami i obiektami. To pozwala im tworzyć dobrze zorganizowany kod, który jest łatwy do odczytania i utrzymania.

Typowe przypadki samodzielnego użycia

Czym jest self w Pythonie: przykłady z życia wzięte

Istnieje wiele sposobów użycia słowa kluczowego w kodzie Pythona. Dzięki zrozumieniu tych przypadków użycia będziesz w stanie skutecznie wykorzystywać je w swoich programach. self self

Przyjrzyjmy się niektórym z nich:

Dostęp do atrybutów klasy

Jednym z podstawowych zastosowań selfjest dostęp do atrybutów instancji w klasie. Atrybuty instancji są specyficzne dla obiektu utworzonego z klasy i przechowują dane obiektu.

Używanie selfpozwala manipulować tymi atrybutami lub uzyskiwać do nich dostęp w ramach metod klasowych. Spójrzmy na przykład:

class Dog: def __init__(self, name, age): self.name = name self.age = age def display_name(self): print("The dog's name is:", self.name)

W tym przykładzie użyliśmy self dostępu do atrybutu name obiektu Dog w display_name metodzie.

Wywoływanie metod klasy

Innym częstym przypadkiem użycia selfjest wywoływanie innych metod klasy z poziomu metody instancji. Pozwala to na ponowne użycie kodu, zmniejszenie złożoności i poprawę czytelności.

Jest to niezbędne do użycia selfw przypadku odwoływania się do innych metod, ponieważ zapewnia wywołanie prawidłowej metody dla określonej instancji. Rozważ następujący przykład:

class Bird: def __init__(self, species, color): self.species = species self.color = color def show_species(self): print("The bird species is:", self.species) def show_info(self): self.show_species() print("The bird color is:", self.color)

W powyższym przykładzie używamy selfdo wywołania show_speciesmetody z poziomu show_infometody. Dzięki temu możemy wyświetlić gatunek i kolor ptaka w jednym wywołaniu.

Na koniec pamiętaj, aby używać selfpodczas uzyskiwania dostępu do atrybutów instancji i wywoływania metod klasy. Gdy zrozumiesz te przypadki użycia, będziesz mógł pisać wydajniejszy i bardziej zorganizowany kod w Pythonie.

Najlepsze praktyki własne

Czym jest self w Pythonie: przykłady z życia wzięte

Podczas pracy z self,istnieją pewne konwencje, których należy przestrzegać, aby uniknąć problemów i błędów w kodzie. Tutaj jest kilka z nich.

Gdzie używać Self

Podczas definiowania metod instancji zawsze używaj selfparametru jako pierwszego parametru. Umożliwia to dostęp i modyfikowanie atrybutów instancji obiektu oraz wywoływanie innych metod instancji w obrębie klasy.

Jest to ważne selfpodczas pracy z instancjami obiektów w Pythonie. Użycie go zapewnia spójne zachowanie i pozwala na właściwą enkapsulację obiektu.

Rozważmy na przykład następującą klasę:

class MyClass: def __init__(self, my_var): self.my_var = my_var

Tutaj parametr self jest używany w __init__ metodzie do inicjalizacji my_var atrybutu instancji obiektu. W ten sposób staje się atrybutem specyficznym dla instancji. my_var

W rezultacie można uzyskać do niego dostęp i modyfikować go za pomocą odniesienia do siebie w innych metodach klasy.

Konwencje nazewnictwa dla siebie

Chociaż selfjest to konwencjonalna nazwa używana dla instancji w Pythonie, technicznie możesz użyć dowolnej nazwy. Jednak zdecydowanie zaleca się trzymanie się używania self dla przejrzystości i spójności z szerszą społecznością Pythona.

Użycie innej nazwy może wprowadzić w błąd osoby czytające i pracujące z Twoim kodem, zwłaszcza jeśli są przyzwyczajone do standardowych konwencji nazewnictwa w bibliotekach Pythona.

Gdzie nie używać Self

Wiemy już, że selfparametr zapewnia dostęp do instancji obiektu. Jednak w niektórych przypadkach niektóre funkcje w klasie mogą nie wymagać dostępu do instancji obiektu.

W tym scenariuszu parametr self nie jest potrzebny. Tak więc Python udostępnia funkcję metody statycznej do obejścia parametru self:

Oto przykład:

class Car: @staticmethod def print_car(): print('Vroom Vroom')

W powyższym przykładzie @staticmethoddekorator funkcji zastępuje selfwymaganie parametru w metodzie. W ten sposób funkcja będzie nadal działać, nawet jeśli nie zostanie do niej przekazana żadna instancja obiektu.

Wniosek

Czym jest self w Pythonie: przykłady z życia wzięte

Podsumowując, parametr self w Pythonie odnosi się do instancji klasy i umożliwia dostęp do jej atrybutów i metod. Jako programista Pythona ważne jest, aby zrozumieć cel self i jego użycie w klasach i obiektach.

Konsekwentne używanie self w kodzie promuje czytelność i łatwość konserwacji, co poprawia ogólną jakość Twojej pracy.

Pamiętaj też, że choć często spotykasz się z terminem "self"używanym w Pythonie, nie jest to zastrzeżone słowo kluczowe Pythona. Różni się to od języków programowania, takich jak Javascript i Java , gdzie "this" jest zastrzeżonym słowem kluczowym.

Możesz nazwać pierwszy parametr w metodzie klasy, jak chcesz; self to po prostu preferowana konwencja.

Czy self jest słowem kluczowym w Pythonie? 

Jest pytanie, które zawsze pojawia się wśród programistów Pythona. Czy self jest w rzeczywistości słowem kluczowym w Pythonie? 

W przeciwieństwie do innych języków programowania, takich jak C++, gdzie słowo self jest uważane za słowo kluczowe, w Pythonie jest to konwencja, której programiści zwykle przestrzegają. Zasadniczo jest to parametr w definicji metody. Zamiast słowa „ja” możesz jednak użyć dowolnego innego imienia, na przykład inne lub ja lub cokolwiek innego dla pierwszego parametru metody. Innym powodem, dla którego jest to sugerowane przez większość ludzi, jest to, że zwiększa czytelność kodu. 

Zobaczmy przykład, aby to zrozumieć: 

class myClass:   def show(another):   print(„inny jest używany zamiast self”)  

Jeśli porównasz ten kod z kodem samodzielnego konstruktora klasy Python, zauważysz, że użyliśmy tutaj nazwy innej w miejsce ja. Utwórzmy teraz obiekt tej klasy i zobaczmy wynik: 

obiekt = mojaKlasa()   obiekt.show()

Widać, że program działa nawet jeśli zamiast zmiennej self użyjemy innej nazwy. Działa dokładnie tak samo, jak zmienna self. 


Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Jak zapisać i załadować plik RDS w R

Jak zapisać i załadować plik RDS w R

Dowiesz się, jak zapisywać i ładować obiekty z pliku .rds w R. Ten blog będzie również omawiał sposób importowania obiektów z R do LuckyTemplates.

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

W tym samouczku omówiono sposób korzystania z techniki wielowątkowych wizualizacji dynamicznych w celu tworzenia szczegółowych informacji na podstawie dynamicznych wizualizacji danych w raportach.

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

W tym artykule omówię kontekst filtra. Kontekst filtrowania to jeden z głównych tematów, z którym każdy użytkownik usługi LuckyTemplates powinien zapoznać się na początku.

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Chcę pokazać, jak usługa online LuckyTemplates Apps może pomóc w zarządzaniu różnymi raportami i spostrzeżeniami generowanymi z różnych źródeł.

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Dowiedz się, jak obliczyć zmiany marży zysku przy użyciu technik, takich jak rozgałęzianie miar i łączenie formuł języka DAX w usłudze LuckyTemplates.

Pomysły na materializację pamięci podręcznych danych w DAX Studio

Pomysły na materializację pamięci podręcznych danych w DAX Studio

W tym samouczku omówiono idee materializacji pamięci podręcznych danych oraz ich wpływ na wydajność języka DAX w dostarczaniu wyników.

Raportowanie biznesowe przy użyciu usługi LuckyTemplates

Raportowanie biznesowe przy użyciu usługi LuckyTemplates

Jeśli do tej pory nadal korzystasz z programu Excel, jest to najlepszy moment, aby zacząć korzystać z usługi LuckyTemplates na potrzeby raportowania biznesowego.

Co to jest brama LuckyTemplates? Wszystko co musisz wiedzieć

Co to jest brama LuckyTemplates? Wszystko co musisz wiedzieć

Co to jest brama LuckyTemplates? Wszystko co musisz wiedzieć