Обнаружение изменения значения переменных Python - PullRequest
2 голосов
/ 24 сентября 2011

Есть ли способ вызывать функцию каждый раз, когда значение переменной изменяется, в python?

Что-то вроде слушателя, возможно?

В частности, я имею в виду случай, когда только переменная совместно используется между сценариями, как GAE-Session.(Который использует файлы cookie, Memcache и т. Д. Для обмена данными)

Пример: ScriptA и ScriptB, совместно использовать переменную сеанса.Когда сценарий B меняет его, SctiptA должен вызвать метод для обработки этого изменения.

Ответы [ 5 ]

5 голосов
/ 24 сентября 2011

Используйте свойства. Только изменяемые значения могут изменяться для начала.

class Something(object):
    @property
    def some_value(self):
        return self._actual
    @some_value.setter
    def some_value(self, value):
        print ("some_value changed to", value)
        self._actual = value
2 голосов
/ 24 сентября 2011

Если переменная является атрибутом класса, вы можете определить __setattr__ в классе .

1 голос
/ 24 сентября 2011

Этот пакет может быть полезен.

0 голосов
/ 08 сентября 2015

Возможно, вам нужно расширить тип "int" или "float" и переопределить функцию "setattr", чтобы она отвечала вам по-своему.

class MyInt(int):
    ...
    def __setattr__(self, attr, val):
        ...
        super(MyInt, self).__setattr__(attr, val)
        ...

var = MyInt(5)
0 голосов
/ 24 сентября 2011

Для этого случая (и я не могу поверить, что я говорю слова) звучит как ситуация для сеттеров

def set_myvar(x):
    my_var = x
    some_function()
    return my_var
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...