Python, когда я не должен использовать свойства - PullRequest
0 голосов
/ 10 марта 2019

Я узнал о @property декораторах, которые заменяют геттеры и сеттеры. Многие люди предпочитают использовать @property вместо методов получения и установки.

Независимо от того, что желательно, они вообще нужны в большинстве случаев? Я чувствую, что нет необходимости или излишне иметь @property для всех внутренних переменных, особенно когда переменные так же просты, как показано ниже. Разве простые вещи не должны оставаться простыми, если они работают?

class Ex():
    def __init__(self, value):
        self.__x = value

    @property
    def x(self):
        return self.__x
    @x.setter
    def x(self, value):
        self.__x = value

Я также не думаю, что @property обеспечивает дополнительную безопасность (если это вообще необходимо), так как люди с намерением все еще могут получить доступ к переменной. (._Ex__x)

Почему я должен использовать @property (когда проверка и будущие изменения не ожидаются) и когда я не должен их использовать?

1 Ответ

2 голосов
/ 10 марта 2019

PEP 8 , Руководство по стилю для кода Python гласит:

Для простых общедоступных атрибутов данных лучше всего предоставлять только имя атрибута без сложных методов доступа / мутатора.

Свойство без дополнительной логики, как вы показали, не дает никаких преимуществ по сравнению с использованием простого атрибута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...