Python self – co to jest i dlaczego go potrzebujesz?
Jeśli zaczynasz przygodę z programowaniem obiektowym w Pythonie, na pewno spotkałeś się ze słowem kluczowym self. Czym ono jest? Dlaczego pojawia się w każdej metodzie klasy? Sprawdźmy, jak działa i dlaczego jest tak ważne!
Python self – co to jest?
W języku Python self to konwencjonalna nazwa pierwszego parametru każdej metody w klasie. Reprezentuje on obiekt, na którym metoda jest wywoływana. Dzięki niemu możemy uzyskać dostęp do atrybutów i metod danej instancji klasy.
W skrócie – self to sposób, w jaki obiekt "wie", kim jest.
Jak działa self? – Przykład
Przyjrzyjmy się prostemu przykładowi, który pokaże, jak działa self:
class Samochod:
def __init__(self, marka, model):
self.marka = marka
self.model = model
def przedstaw_sie(self):
return f"Jestem {self.marka} {self.model}!"
moje_auto = Samochod("Toyota", "Corolla")
print(moje_auto.przedstaw_sie()) # Output: Jestem Toyota Corolla!
W tym przykładzie self pozwala każdemu obiektowi klasy Samochod przechowywać i pobierać własne dane.
Czy self jest obowiązkowe?
Tak! W Pythonie self jest niezbędne do dostępu do atrybutów instancji wewnątrz metod klasy. Bez niego Python nie wiedziałby, czy dana zmienna należy do instancji, czy jest zwykłą zmienną lokalną.
Na przykład, jeśli spróbujemy usunąć self, kod przestanie działać:
class Samochod:
def __init__(marka, model): # Brak self!
marka = marka
model = model
moje_auto = Samochod("Toyota", "Corolla")
print(moje_auto.marka) # AttributeError: 'Samochod' object has no attribute 'marka'
Dlaczego tak się dzieje? Ponieważ bez self, Python nie przypisuje wartości do atrybutów instancji – tworzy tylko zwykłe zmienne lokalne w metodzie __init__().
Self w praktyce – więcej przykładów
Przyjrzyjmy się kilku praktycznym zastosowaniom self.
1. Modyfikowanie atrybutów obiektu
Możemy użyć self, aby zmieniać wartości atrybutów instancji:
class Licznik:
def __init__(self):
self.wartosc = 0
def zwieksz(self):
self.wartosc += 1
def pokaz(self):
return f"Aktualna wartość: {self.wartosc}"
licznik = Licznik()
licznik.zwieksz()
print(licznik.pokaz()) # Output: Aktualna wartość: 1
Dzięki self, każdy obiekt klasy Licznik może przechowywać własną wartość licznika.
2. Self a metody statyczne i klasowe
Nie wszystkie metody w Pythonie wymagają self. Jeśli metoda nie operuje na konkretnej instancji, możemy użyć dekoratorów:
class Narzedzia:
@staticmethod
def powitaj():
return "Cześć, to metoda statyczna!"
@classmethod
def powiedz_klase(cls):
return f"To metoda klasowa z klasy {cls.__name__}"
print(Narzedzia.powitaj()) # Output: Cześć, to metoda statyczna!
print(Narzedzia.powiedz_klase()) # Output: To metoda klasowa z klasy Narzedzia
W metodzie statycznej nie ma self, ponieważ nie odnosi się ona do żadnej konkretnej instancji. Z kolei metoda klasowa używa cls zamiast self, ponieważ odnosi się do samej klasy.
Podsumowanie
Słowo kluczowe self jest fundamentem programowania obiektowego w Pythonie. Pozwala obiektom przechowywać i modyfikować własne dane, a także umożliwia dostęp do metod i atrybutów instancji.
Teraz, gdy już wiesz, czym jest self, możesz śmiało pisać własne klasy i budować obiektowe aplikacje w Pythonie!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!