我意识到这个问题与事件处理有关,我已经阅读了关于Python事件处理程序的调度程序,所以要么它没有回答我的问题,要么我完全错过了这些信息.
我想要在值发生变化时触发m()对象的方法:Av
例如(假设钱让人开心):
global_wealth = 0
class Person()
def __init__(self):
self.wealth = 0
global global_wealth
# here is where attribute should be
# bound to changes in 'global_wealth'
self.happiness = bind_to(global_wealth, how_happy)
def how_happy(self, global_wealth):
return self.wealth / global_wealth
Run Code Online (Sandbox Code Playgroud)
因此,每当global_wealth更改值时,类的所有实例Person都应相应地更改其happiness值.
注意:我必须编辑问题,因为第一个版本似乎暗示我需要getter和setter方法.对困惑感到抱歉.
Python有Tkinter的变量类StringVar(),BooleanVar()等等,这些都共享方法get(),set(string)和trace(mode, callback).callback作为第二个参数传递的函数传递了trace(mode, callback)四个参数,self, n, m, x.
BooleanVar()这些似乎是一个例子'', 'PYVAR0', 'w'.
第三个参数x似乎是触发跟踪的模式,在我的情况下,变量已更改.但是,第一个看似空字符串的变量是什么?什么是第二个,如果我不得不猜测我会说变量的内部名称?