Сеттеры и геттеры

В 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

📌 Плюсы:

  • Читается как обычный атрибут (obj.name), но внутри — логика.

  • Можно в любой момент добавить проверки, не меняя интерфейс класса.


3. Только геттер (read-only свойство)

📌 Используется, когда свойство вычисляется и не должно напрямую изменяться.


4. Пример из автоматизации тестирования

В Page Object Model часто делают геттер для локаторов, чтобы не хранить их как константы и иметь возможность вычислять динамически.

Использование:

Last updated

Was this helpful?