Задать вопрос
@Boris19

Как правильно получать значения поля объекта класса?

Как наиболее правильно с точки зрения архитектуры приложения получать значения полей какого-либо объекта?
Просто напрямую или лучше создавать соответствующую функцию, которая будет возвращать значение внутренней переменной? И надо ли в таком случае имя переменной начинать с нижнего подчеркивания?
  • Вопрос задан
  • 193 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
adugin
@adugin Куратор тега Python
Можно любым способом, лишь бы код был простой, читабельный и избегал заведомо лишних вычислений.

1) Если поле статическое - напрямую.
2) Если поле вычисляемое в момент запроса - через @property.
3) Можно через функцию, если зависит от параметров.

Надо ли начинать с подчёркивания - определяется программистом. Должно ли это поле быть"видно" вовне?
Ответ написан
Комментировать
@deliro
1. Геттеры и сеттеры в питоне для обычных атрибутов не принято использовать.
2. Если атрибут "необычный", то геттеры и сеттеры реализуются через @property, @attr.setter, @attr.deleter, настоящее же поле скрывается из интерфейса нижним подчёркиванием.
Примером необычного атрибута может быть реализация пароля:
class User:
    def __init__(self, username, password):
        self.username = username
        self._password = make_password(password)

    @property
    def password(self):
        return self._password

    @password.setter
    def password(self, value):
        self._password = make_password(value)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы