Сеттеры и геттеры
В Python геттеры и сеттеры — это методы для получения (get) и установки (set) значений атрибутов объекта, часто с дополнительной логикой проверки, валидации или вычислений.
В отличие от Java или C#, в Python их обычно реализуют через @property и @<property>.setter, чтобы сохранять красивый доступ через точку, но при этом иметь возможность вставить логику.
1. Классический (непитонический) способ — явные методы
class Person:
def __init__(self, name):
self._name = name # защищённый атрибут
def get_name(self):
return self._name
def set_name(self, new_name):
if not new_name:
raise ValueError("Имя не может быть пустым")
self._name = new_name
p = Person("Иван")
print(p.get_name()) # Иван
p.set_name("Мария")📌 Недостаток — в Python так почти не делают, потому что это похоже на Java-стиль.
2. Питонический способ — @property и @<property>.setter
@property и @<property>.setter📌 Плюсы:
Читается как обычный атрибут (
obj.name), но внутри — логика.Можно в любой момент добавить проверки, не меняя интерфейс класса.
3. Только геттер (read-only свойство)
📌 Используется, когда свойство вычисляется и не должно напрямую изменяться.
4. Пример из автоматизации тестирования
В Page Object Model часто делают геттер для локаторов, чтобы не хранить их как константы и иметь возможность вычислять динамически.
Использование:
Last updated
Was this helpful?