【发布时间】:2013-03-11 23:10:19
【问题描述】:
我想创建一个装饰器函数来对 python 类进行操作,并能够传递额外的参数。我想在类实例化之前 这样做。这是我的方法:
def register(x,a):
print x,a
@register(5)
class Foo(object):
pass
x 是类,a 是附加参数。但我得到了一个
TypeError: register() takes exactly 2 arguments (1 given)
我想要的是在类被定义时(在类被实例化之前)获取类Foo 和其他参数的方法。
【问题讨论】:
-
如果你想这样做,你不需要定义一个接受两个参数的装饰器。您定义一个接受一个参数的函数(您的
a),并让该函数返回一个接受一个参数(类)的装饰器。 -
但是当我用一个参数定义函数时,它就是类!把上面的
,a去掉两次,输出就是<class '__main__.Foo'>。 -
@ArtsiomRudzenka 的解决方案效果很好
标签: python python-2.7 decorator