# 回答1
在17 Juil,16:57,Mk
从此处的dict继承有什么用???
属性的错误签名.
请注意,当您的(不正确)GETTER时,您正在传递字符串
期望功能对象.
是:直接称呼它! - )
或记住那句老话:
"""
任何软件问题都可以通过添加另一层
间接.当然,除了间接太多的问题外.
"""
AT&T实验室的Steve Bellovin
应用于您的问题,这意味着要使您的Getter返回
关闭将获取功能或功能名称并返回的结果
查找,即:
def fget(self):
返回lambda funcname:self.fundict [funcname]
但是无论如何:这仍然是任意的典型情况
过度复杂.一个普通的命令就足够了.或者,给定
上下文(如在此处的较早文章中所暴露的),我建议一些东西
喜欢:
class callbacksregister(对象):
def __init __(self,** kw):
self._store = dict(** kw)
def寄存器(self,func,name = none):
如果名称无:
名称= func .__名称__
self._store(name)= func
返回功能
def get(self,name,default = none):
返回self._store.get(名称,默认值)
def __getAttr __(self,name):
尝试:
返回self._store [名称]
除了KeyError:
rish attributeError('%s对象没有属性'%s'"%
(自我,名字)
callbacks = callbacksregister()
@callbacks.register
def F1(arg):
打印" F1",arg
callbacks.f1(" yadda")
callbacks.get('f1')('yadda')
计算属性的好处(属性类仅为一个
可能的实现)是解除接口(看起来像个
实现的普通属性)(实际上是计算得出的).和
从这种脱钩中受益是您不必写getters/
播放器直到您真的需要它们为止,因为您可以转动一个平原
将属性归因于计算的,而无需打破接口.
我看不到您从上面的财产中获得什么"好处"
摘要.