Как вызвать определенную функцию при изменении переменной класса?Python

Программы на Python
Anonymous
Как вызвать определенную функцию при изменении переменной класса?

Сообщение Anonymous »

Я создал класс и инициализировал три переменные a, b и c. Теперь я хочу вызывать определенную функцию func1 всякий раз, когда переменные a или c изменяются извне, и функцию func2, когда переменная b изменяется извне.
Я знаю, что это можно сделать с помощью декораторов, например:

Код: Выделить всё

class Event:
def __init__(self, a, b, c):
self._a = a
self._b = b
self._c = c

@property
def a(self):
return self._a
@a.setter
def a(self, value):
self._a = value
print("Variable a changed!")
self.func1()

@property
def b(self):
return self._b
@b.setter
def b(self, value):
self._b = value
print("Variable b changed!")
self.func2()

@property
def c(self):
return self._c
@c.setter
def c(self, value):
self._c = value
print("Variable c changed!")
self.func1()

def func1(self):
print("Function 1 called")
def func2(self):
print("Function 2 called")

obj = Event(1, 2, 3)
obj.a = 15
obj.b = 10
obj.c = 5
Однако мой окончательный код будет содержать 8 или более переменных, и написание назначенных @property и @var.setter для каждой из них будет очень громоздким и не совсем читабельным.
p>
Есть ли более простой способ сказать: Если переменные a, c, f,... обновлены, вызовите функцию X, если b, e,... обновлены, вызовите функцию Y< /code>?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/781 ... le-changes

Вернуться в «Python»