V oblasti objektově orientovaného programování existuje několik zavedených konceptů, které pomáhají spravovat přístup k vlastnostem objektů. Jeden z těchto centrálních aspektů jsou Getter a Setter. V Pythonu však není tento koncept implementován stejným způsobem jako v jiných objektově orientovaných jazycích. V této příručce se dozvíš, jak můžeš Gettery a Settery v Pythonu efektivněji využívat, abys kontroloval přístup k vlastnostem svých tříd.
Nejdůležitější poznatky
- Gettery a Settery jsou metody, které kontrolují přístup k vlastnostem.
- V Pythonu existuje elegantní způsob, jak implementovat Gettery a Settery pomocí dekorátoru @property.
- Použití vlastních názvových konvencí pomáhá jasně rozlišovat mezi interními a veřejnými vlastnostmi.
- Konvence pro přístupové modifikátory v Pythonu se liší od ostatních jazyků.
Krok za krokem
Krok 1: Vytvoření třídy s vlastnostmi
Začni definováním jednoduché třídy. Předpokládejme, že chceš vytvořit třídu Osoba, která má jméno jako atribut. Při tom je jméno uloženo v inicializátoru jako soukromá vlastnost.

Zde je _name deklarováno jako interní vlastnost, přičemž podtržítko jako prefix signalizuje, že se jedná o soukromou proměnnou.
Krok 2: Přidání Gettera
Abychom realizovali přístup k interní vlastnosti name, přidáme Getter metodu. Tato metoda vrací aktuální hodnotu jména.

Krok 3: Přidání Settera
Nyní přidáme Setter metodu, aby bylo možné změnit jméno osoby. Setter ti umožňuje nastavit nové hodnoty pro interní vlastnost.

Krok 4: Použití @property
V Pythonu je práce s vlastnostmi ještě elegantnější, když použiješ dekorátor @property. Tímto způsobem můžeš definovat Gettery a Settery přímo ve třídě, aniž bys musel vytvářet samostatné metody.

Krok 5: Práce s neveřejnými vlastnostmi
Abychom zajistili, že interní vlastnost nebude přístupná přímo zvenčí, můžeš použít prefix __, aby byla vlastnost ještě více kapsulována. Tento přístup zajišťuje, že přístup probíhá výhradně prostřednictvím Getter a Setter metod.

Touto implementací se zajistí, že k __name není možné přistupovat zvenčí.
Souhrn – Gettery a Settery v Pythonu
V této příručce jsi se naučil, jak efektivně implementovat Gettery a Settery v Pythonu, abys kontroloval přístup k proměnným objektu. Přitom jsi se seznámil s užíváním @property, což činí kód přehlednějším a idiomatičtějším. Kapsulováním vlastností s dvojitým podtržítkem můžeš zajistit, že interní proměnné jsou chráněny před neoprávněným přístupem.
Často kladené otázky
Co jsou Gettery a Settery v Pythonu?Gettery a Settery jsou metody, které kontrolují a umožňují přístup k vlastnostem třídy.
Jak implementuji Gettery a Settery v Pythonu?Můžeš implementovat Gettery a Settery pomocí metod nebo dekorátoru @property.
Jaká je výhoda dekorátoru @property?Dekorátor @property umožňuje elegantní a intuitivní přístup k atributům, aniž bys musel implementovat samostatné metody.
Proč by vlastnosti v Pythonu neměly být přímo přístupné?Tak přímý přístup může vést k neočekávanému chování a ohrozit integritu dat objektu, proto je lepší přístup kontrolovat.
Co znamená označit vlastnost jako "privátní"?Privátní vlastnost je označena přidáním podtržítka (_) nebo dvojitého podtržítka (__), aby se naznačilo, že by neměla být přímo přístupná zvenčí.