Как выполнить код при изменении переменной экземпляра? - PullRequest
0 голосов
/ 08 января 2019

У меня есть переменная экземпляра из класса, и я хочу выполнить некоторый код, когда в моей переменной есть изменение.

Я знаю, как обрабатывается событие свойства и шаблона Observer, но я не думаю, что это помогает в моем случае.

Пример:

class Thing:
  def __init__(self):
      self.thing = []
      self.thing2 = ""
  def code_that_executes(self):
      self.thing2 = self.thing[0]
s = Thing()
s.thing.append("Something") #The event 

1 Ответ

0 голосов
/ 09 января 2019

Вы можете реализовать setattr в своем классе. Вот пример:

class A:
    def __init__(self):
        self.A = 5
    def __setattr__(self, name, value):
        if name == "A":
            print("A has changed to: {0}".format(value))
Теперь, когда у вас есть объект `foo = Foo ()` и вызовите `foo.bar = 5`, вы получите результат:
bar changed to 5

См. https://docs.python.org/3/reference/datamodel.html#object.setattr

Примечание: Это будет печататься также во время вызова init .

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