W dziedzinie programowania obiektowego istnieje kilka ustalonych koncepcji, które pomagają zarządzać dostępem do właściwości obiektów. Jednym z tych kluczowych aspektów są Gettery i Settery. W Pythonie koncepcja ta nie jest jednak implementowana w ten sam sposób co w innych językach obiektowych. W tym przewodniku dowiesz się, jak efektywniej korzystać z Getterów i Setterów w Pythonie, aby kontrolować dostęp do właściwości swoich klas.
Najważniejsze wnioski
- Gettery i Settery to metody, które kontrolują dostęp do właściwości.
- W Pythonie istnieje elegancki sposób na implementację Getterów i Setterów za pomocą dekoratora @property.
- Użycie niestandardowych konwencji nazw pomaga wyraźnie odróżnić właściwości wewnętrzne od publicznych.
- Konwencja Pythona dotycząca modyfikatorów dostępu różni się od innych języków.
Krok po kroku
Krok 1: Utworzenie klasy z właściwościami
Rozpocznij od zdefiniowania prostej klasy. Załóżmy, że chcesz utworzyć klasę Person, która ma nazwę jako atrybut. Nazwa ta będzie przechowywana jako prywatna właściwość w inicjalizatorze.

Tutaj _name jest zadeklarowane jako wewnętrzna właściwość, a prefiks podkreślenia sygnalizuje, że jest to zmienna prywatna.
Krok 2: Dodanie Gettera
Aby uzyskać dostęp do wewnętrznej właściwości name, dodaj metodę Getter. Ta metoda zwraca aktualną wartość nazwy.

Krok 3: Dodanie Settera
Teraz dodajemy metodę Setter, aby zmienić imię osoby. Setter pozwala na ustawienie nowych wartości dla wewnętrznej właściwości.

Krok 4: Użycie @property
W Pythonie obsługa właściwości staje się jeszcze bardziej elegancka, gdy używasz dekoratora @property. Pozwala to na bezpośrednie definiowanie Getterów i Setterów w klasie bez potrzeby tworzenia oddzielnych metod.

Krok 5: Obsługa właściwości niepublicznych
Aby upewnić się, że wewnętrzna właściwość nie jest bezpośrednio dostępna z zewnątrz, możesz użyć prefiksu __, aby jeszcze bardziej kapsułkować właściwość. Dzięki temu podejściu zapewnisz, że dostęp będzie odbywał się wyłącznie przez metody Getter i Setter.

Dzięki tej implementacji zapewniono, że na __name nie można uzyskać dostępu z zewnątrz.
Podsumowanie – Gettery i Settery w Pythonie
W tym przewodniku nauczyłeś się, jak efektywnie implementować Gettery i Settery w Pythonie, aby kontrolować dostęp do zmiennych obiektowych. Poznałeś także użycie @property, co sprawia, że kod jest bardziej czytelny i idiomatyczny. Kapsułkując właściwości z podwójnym podkreśleniem, możesz upewnić się, że zmienne wewnętrzne są chronione przed nieautoryzowanym dostępem.
Najczęściej zadawane pytania
Co to są Gettery i Settery w Pythonie?Gettery i Settery to metody, które kontrolują i umożliwiają dostęp do właściwości klasy.
Jak zaimplementować Gettery i Settery w Pythonie?Możesz zaimplementować Gettery i Settery za pomocą metod lub dekoratora @property.
Jaka jest zaleta @property?Dekorator @property umożliwia elegancki i intuicyjny dostęp do atrybutów, bez potrzeby implementowania oddzielnych metod.
Dlaczego właściwości w Pythonie nie powinny być bezpośrednio dostępne?Bezpośredni dostęp może prowadzić do nieoczekiwanego zachowania i zagrozić integralności danych obiektów, dlatego lepiej kontrolować dostęp.
Co oznacza oznaczenie właściwości jako "prywatnej"?Prywatna właściwość jest oznaczona przez dodanie podkreślenia (_) lub podwójnego podkreślenia (__) na początku, aby wskazać, że nie powinna być bezpośrednio dostępna z zewnątrz.