如何解决Python 3触发隐式值更改的回调
只要对象callback
的某些属性发生变化,我都希望调用A
。
我知道这个问题与Python中的观察者模式和描述符有关。但是,描述符似乎只能通过点访问来检测显式更改。
例如:
class Observer(object):
def __init__(self,callback=None):
self.__callback = callback
def __set_name__(self,owner,name):
self.__name = name
def __set__(self,obj,value):
obj.__dict__[self.__name] = value
self.trigger()
def __get__(self,type=None):
return obj.__dict__.get(self.__name)
def trigger(self):
self.__callback()
def hello():
print('hello')
class MyClass:
data = Observer(hello)
a = MyClass()
a.data = [[1],2,3]
a.data.append(4)
a.data[0][0] = -1
在上面的代码中,仅对data
的初始化调用一次回调。但是,我希望它被调用3次。我不希望使用描述符,但我确实希望该方法适用于任何数据类型,例如list
,dict
等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。