我尝试定义类装饰器。我在装饰课上用__init__
方法有问题。如果__init__
方法调用super
RuntimeError
最大递归深度超出被引发。Python类装饰器和超过最大递归深度
代码示例:
def decorate(cls):
class NewClass(cls): pass
return NewClass
@decorate
class Foo(object):
def __init__(self, *args, **kwargs):
super(Foo, self).__init__(*args, **kwargs)
我在做什么错?
感谢,米哈尔
编辑1
感谢Mike布尔人回答我意识到,正确的问题是,我该怎么办才达到该超(美孚,个体经营)指向正确的类。
我也有两个限制。我想调用Foo.__init__
方法,我不能更改Foo
类定义。
编辑2
我已经解决了这个问题。我修改装饰函数体。我不回新班。而不是我包装原始类的方法。
可能重复(http://stackoverflow.com/questions/2542747/class-decorators-inheritance-super-and-maximum-recursion) – 2010-06-09 13:23:50
如何将装饰器应用于Foo类,但无法更改其定义? – 2010-06-09 17:31:06
我正在写ajax验证django应用程序。它应该是通用的,并且不需要对表单类定义进行更改。 – 2010-06-09 18:25:14