MC, 2025
Ilustracja do artykułu: Python self – co to jest i dlaczego go potrzebujesz?

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!

Imię:
Treść: