В областта на обектно-ориентираното програмиране има някои утвърдени концепции, които помагат за управление на достъпа до свойствата на обектите. Един от тези централни аспекти са Getter и Setter. В Python, обаче, тази концепция не се реализира по същия начин, както в другите обектно-ориентирани езици. В това ръководство ще научиш как да използваш Getter и Setter в Python по-ефективно, за да контролираш достъпа до свойствата на своите класове.
Най-важни изводи
- Getter и Setter са методи, които контролират достъпа до свойства.
- В Python има елегантен начин за имплементиране на Getter и Setter с декоратора @property.
- Използването на персонализирани конвенции за наименования помага да се различат ясно вътрешните и публични свойства.
- Конвенцията на Python за модификатори на достъпа се различава от другите езици.
Насоките стъпка по стъпка
Стъпка 1: Създаване на клас със свойства
Започни с дефиниране на прост клас. Да предположим, че искаш да създадеш клас Човек, който има име като атрибут. Името ще бъде запазено в инициатора като частно свойство.

Тук _name е декларирано като вътрешно свойство, като префиксът с подчертавка сигнализира, че става въпрос за частна променлива.
Стъпка 2: Добавяне на Getter
За да реализираш достъп до вътрешното свойство name, добави метод Getter. Този метод връща текущата стойност на името.

Стъпка 3: Добавяне на Setter
Сега добавяме метод Setter, за да може името на човека да бъде променяно. Setter-ът ти позволява да задаваш нови стойности за вътрешното свойство.

Стъпка 4: Използване на @property
В Python работата със свойства е още по-елегантна, когато използваш декоратора @property. С него можеш да дефинираш Getter и Setter директно в класа, без да е необходимо да създаваш отделни методи.

Стъпка 5: Работа с непублични свойства
За да се увериш, че вътрешното свойство не е достъпно директно извън класа, можеш да използваш префикса __, за да капсулираш свойството още по-силно. Този подход гарантира, че достъпът се извършва само чрез методите Getter и Setter.

С тази имплементация ще се гарантира, че __name не може да бъде достъпено от външни източници.
Резюме – Getter и Setter в Python
В това ръководство научи как да имплементираш Getter и Setter в Python ефективно, за да контролираш достъпа до променливите на обектите. Също така се запозна с използването на @property, което прави кода по-ясен и идиоматичен. Като капсулираш свойствата с двойно подчертаване, можеш да гарантираш, че вътрешните променливи са защитени от неоторизиран достъп.
Често задавани въпроси
Какво са Getter и Setter в Python?Getter и Setter са методи, които контролират и позволяват достъпа до свойства на клас.
Как да имплементирам Getter и Setter в Python?Можеш да имплементираш Getter и Setter чрез методи или с декоратора @property.
Какво е предимството на @property?Декораторът @property позволява елегантен и интуитивен достъп до атрибути, без необходимост от имплементиране на отделни методи.
Защо свойствата в Python не трябва да бъдат достъпни директно?Директният достъп може да доведе до неочаквано поведение и да застраши целостта на данните на обекта, затова е по-добре достъпът да бъде контролиран.
Какво означава да се обозначи един атрибут като "частен"?Частното свойство се обозначава с предшестване на подчертаване (_) или двойно подчертаване (__), за да се покаже, че не трябва да бъде достъпно директно извън класа.