Parametr self
Część sekcji Programowanie obiektowe ścieżki Python w Coddy. Lekcja 4 z 64.
Parametr self odnosi się do instancji klasy wewnątrz metod. Umożliwia dostęp do atrybutów bieżącego obiektu i ich modyfikowanie.
Oto przykład klasy z metodami używającymi self:
class Car:
def honk(self):
print("Beep beep!")
def describe(self):
print(f"I am a {self.color} {self.model}")Parametr self musi być zawsze pierwszym parametrem w definicjach metod. Informuje metodę, który konkretny obiekt jest używany.
Utwórz obiekt samochodu i dodaj atrybuty:
my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"Teraz wywołaj metody:
my_car.honk()
my_car.describe()Wynik:
Beep beep!
I am a Red SedanZwróć uwagę, że wywołując my_car.describe(), nie przekazujesz niczego dla self — Python automatycznie przekazuje my_car jako parametr self.
Oto, co dzieje się za kulisami:
# Kiedy piszesz tak:
my_car.describe()
# Python w rzeczywistości robi tak:
Car.describe(my_car)Parametr self pozwala każdemu obiektowi uzyskać dostęp do własnych danych. Bez self metody nie wiedziałyby, których atrybutów obiektu użyć.
Najważniejsze: Zawsze umieszczaj self jako pierwszy parametr w definicjach metod, ale nigdy nie przekazuj go podczas wywoływania metod — Python robi to automatycznie.
Wyzwanie
ŁatwyUzupełnij klasę Car w pliku car.py, dodając metodę o nazwie display_info, która używa parametru self, aby wyświetlić rok produkcji, markę i model samochodu w formacie:
"This car is a [year] [make] [model]".
car.py: zawiera definicję klasyCar, do której dodasz metodędisplay_infodriver.py: główny plik wykonywalny, który importuje klasęCari z niej korzysta
Plik driver.py zaimportuje Twoją klasę Car i utworzy jej instancje, aby przetestować Twoją implementację. Upewnij się, że metoda działa poprawnie, gdy jest wywoływana z pliku sterującego.
Spróbuj swoich sił
from car import Car
# Przetestuj swój kod
my_car = Car()
my_car.year = 2020
my_car.make = "Toyota"
my_car.model = "Corolla"
my_car.display_info() # Powinno wyświetlić: This car is a 2020 Toyota CorollaTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneWprowadzenie do programowania obiektowegoKlasy a obiektyParametr selfMetodyAtrybutyMetoda konstruktora (__init__)Powtórzenie – prosty kalkulator4Dziedziczenie
Podstawy dziedziczeniaFunkcja super()Nadpisywanie metodDziedziczenie wielokrotneKolejność rozwiązywania metodPodsumowanie – hierarchia pracowników7Metody specjalne
Wprowadzenie do metod magicznychPrzeciążanie operatorówMagiczne metody kontenerówPowtórka – własna lista10Wzorce projektowe, część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec Strategy2Dekoratory
Wprowadzenie do dekoratorówDekorator propertyDekorator metody statycznejDekorator metody klasowej5Polimorfizm
Ponowne omówienie nadpisywania metodTypowanie kaczeKlasy i metody abstrakcyjneProjektowanie interfejsówPodsumowanie — kalkulator kształtów8Zaawansowane koncepcje programowania obiektowego
Kompozycja a dziedziczenieMiksyMetody statyczne i klasoweDekoratory klasMenedżery kontekstu11Wzorce projektowe, część 2
Wzorzec PolecenieWzorzec AdapterWzorzec DekoratorWzorzec Metoda szablonowaWzorzec StanWzorzec Kompozyt3Właściwości klas
Zmienne instancji a zmienne klasoweDekoratory właściwościAtrybuty prywatnePowtórzenie — menedżer kont bankowych6Hermetyzacja
Public, Protected, Private — pamięćModyfikatory dostępuUkrywanie informacjiDekoratory właściwości — zaawansowanePodsumowanie — system ewidencji uczniów12Projekt: System zarządzania biblioteką
Przegląd projektuKlasy Book i UserSystem wypożyczeńFunkcja wyszukiwaniaInterfejs administratoraTestowanie i integracjaPoćwicz samodzielnie: Kompilator Python online