Gettery i settery w Pythonie

Gettery i settery są metodami, które zapewniają kontrolowany dostęp do atrybutów klasy w programowaniu obiektowym. W Pythonie, języku znającym zarówno konwencję bezpośredniego dostępu do atrybutów, jak i możliwość ich ukrycia za pomocą metod, gettery i settery służą do zarządzania dostępem do danych, walidacji i ewentualnej transformacji tych danych podczas ich odczytu i zapisu.

Przykład użycia getterów i setterów

Rozważmy klasę Book, która reprezentuje książkę w bibliotece. Chcemy mieć kontrolę nad atrybutami takimi jak title i author, aby zapewnić, że tytuł książki zawsze będzie zaczynał się wielką literą, a autor będzie przechowywany w określonym formacie.

class Book:
    def __init__(self, title, author):
        self._title = title
        self._author = author

    @property
    def title(self):
        # Getter dla tytułu książki
        return self._title

    @title.setter
    def title(self, value):
        # Setter dla tytułu książki, zapewniający,
        # że pierwsza litera tytułu jest wielka
        self._title = value.capitalize()

    @property
    def author(self):
        # Getter dla autora książki
        return self._author

    @author.setter
    def author(self, value):
        # Setter dla autora książki, formatujący
        # nazwisko i imię autora
        names = value.split()
        self._author = " ".join(names).title()

# Użycie klasy Book
book = Book("mały książę", "antoine de saint-exupery")
print(f"Tytuł: {book.title}, Autor: {book.author}")
# Aktualizacja tytułu i autora
book.title = "wielki gatsby"
book.author = "f scott fitzgerald"
print(f"Tytuł: {book.title}, Autor: {book.author}")

Dlaczego używamy getterów i setterów?

  1. Enkapsulacja: Ukrywanie szczegółów implementacji atrybutów klasy przed użytkownikiem klasy, zapewniając kontrolę nad dostępem do tych atrybutów.
  2. Walidacja danych: Możliwość sprawdzenia i walidacji danych przed ich przypisaniem do atrybutów.
  3. Łatwość utrzymania: Ułatwia zmianę wewnętrznej implementacji klasy bez wpływu na kod, który z niej korzysta.

Kiedy stosować gettery i settery?

Gettery i settery są szczególnie przydatne, gdy:

  • potrzebna jest walidacja danych przy przypisywaniu wartości do atrybutów,
  • dostęp do atrybutu powinien być kontrolowany lub ograniczony,
  • wartość atrybutu musi być obliczana lub transformowana przed zwróceniem lub zapisaniem.

Podsumowanie

Gettery i settery w Pythonie to potężne narzędzia, które pozwalają na kontrolowany dostęp do atrybutów klasy, ich walidację oraz możliwość transformacji. Dzięki dekoratorowi @property, Python umożliwia elegancką implementację tych metod, zachowując czytelność kodu i zapewniając jednocześnie silną enkapsulację i bezpieczeństwo danych. Wykorzystanie getterów i setterów w projektach Pythona może znacząco przyczynić się do poprawy jakości kodu i jego łatwości w utrzymaniu.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Python w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top