Изменение переменной в методе с @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/ (См. последнюю часть статьи. А в первой части есть альтернативный вариант реализации)

→ Ссылка