Изменение переменной в методе с @property python
Пытаюсь создать простой файл setting, в котором при изменении переменной GLOBAL_VAR_property сразу идет запись в базу данных, можно ли решить эту задачу с @property?
# settings.py
class Global_Settings:
def __init__(self):
self.GLOBAL_VAR = 'test'
@property
def GLOBAL_VAR_property(self):
# запись в базу
return 'test2'
settings = Global_Settings()
как мне теперь изменить переменную для @property?
# other.py
from settings import settings
settings.GLOBAL_VAR = 'new'
# могу ли я так же сделать для проперти метода, чтобы менялась переменная и сразу запись была?
settings.GLOBAL_VAR_property = 'new'
Ответы (1 шт):
Автор решения: Xander
→ Ссылка
Используйте property setter:
class Global_Settings:
def __init__(self):
self.GLOBAL_VAR = 'test'
GLOBAL_VAR_property = property()
@GLOBAL_VAR_property.getter
def GLOBAL_VAR_property(self):
return self.GLOBAL_VAR
@GLOBAL_VAR_property.setter
def GLOBAL_VAR_property(self, value):
# Сюда вставьте запись в базу
print('Новое значение: ' + str(value)
self.GLOBAL_VAR = value
https://pythonz.net/references/named/property/ (См. последнюю часть статьи. А в первой части есть альтернативный вариант реализации)