У меня есть класс MyLib с переменной x. Я не использую эту переменную вне класса, но я устанавливаю ее из другого класса вне пакета. Я хотел бы знать, какой предпочтительный способ установить значение для переменной x ниже. Должен ли я установить его непосредственно, как показано в фрагменте кода ниже или Должен ли я создавать функции @property и @ x.setter для его установки.Использование @property против прямого доступа к переменным
class MyLib:
def __init__(self, *args, **kwargs)
self._x = None
def func_to_process_x():
# do something
class UseLib:
self._x = 'ABC'
Примечание: этот вопрос касается не того, чтобы использовать свойства по геттеру и сеттерам. Скорее я хотел бы знать, целесообразно ли вообще использовать свойства/getter/setters, если мы можем напрямую использовать переменные, поскольку в Python ничего не является частным. Кроме того, рекомендуется использовать свойства, даже если я ничего не делаю в функции @x.setter
, кроме просто присваивания значения переменной. В основном задается вопросом, стоит ли надбавка к свойствам во имя инкапсуляции (хотя это не инкапсуляция в чистом смысле, поскольку ничего не является частным. Пожалуйста, поправьте меня, если я ошибаюсь здесь)
@ Rvdk. Спасибо за ссылку. Но этот вопрос больше говорит о свойствах против геттера и сеттера. Меня больше беспокоит доступ к переменной напрямую, а не использование свойств или getattr/setattr или любых других пользовательских getters/seters. – rdp
Я все еще жду ответа на этот вопрос. Могут ли эксперты python внести свой вклад? – rdp