我继承了一些python代码,其中包含一个相当神秘的decorator。这个装饰器在整个项目的类中设置属性。问题是,我已经将调试问题追溯到这个装饰器。似乎是“fubar”所有我试过的调试器,并试图用psyco breaks来加速代码。(看来psyco和这个装修师玩得不太好)。我想最好还是改一下。
def Property(function):
"""Allow readable properties"""
keys = 'fget', 'fset', 'fdel'
func_locals = {'doc':function.__doc__}
def probeFunc(frame, event, arg):
if event == 'return':
locals = frame.f_locals
func_locals.update(dict((k,locals.get(k)) for k in keys))
sys.settrace(None)
return probeFunc
sys.settrace(probeFunc)
function()
return property(**func_locals)
像这样使用:
class A(object):
@Property
def prop():
def fget(self):
return self.__prop
def fset(self, value):
self.__prop = value
... ect
我得到的错误说这些问题是由于sys.settrace引起的。(也许这是滥用settrace?)
我的问题是:如果不使用sys.settrace,同一个decorator是否可以实现。如果不是的话,我会重做的。
目前没有回答
相关问题 更多 >
编程相关推荐