嗨,我是一个像这样的班级:
def Foo:
def calc(self):
print "calc"
def on_get(self):
print "on get"
def on_post(self):
print "on post"
我想在以on_
开头的类的任何方法中注入pdb跟踪器,因此我想到编写一个装饰器来做到这一点。这就是我到目前为止所拥有的。
def debuggable(cls):
from types import FunctionType
def pdb_injector(view):
def injector_wrapper():
import pdb; pdb.set_trace()
view()
return injector_wrapper
class wrapped(cls):
views = [x for x,y in cls.__dict__.items() if type(y) == FunctionType and 'on_' in x]
for view in views:
_view = getattr(cls,view)
_view = pdb_injector(_view)
setattr(cls ,view, _view)
return wrapped
在将Foo.on_get()
添加到@debuggable
类之后,我确实打电话给Foo
时。我收到此错误:
TypeError:jector_wrapper()不接受任何参数(给定1个)。
为什么会出现此错误?