我尝试定义类装饰器。我__init__在装饰类中的方法有问题。如果__init__方法调用超出super的RuntimeError 最大递归深度,则会引发。
代码示例:
def decorate(cls):
class NewClass(cls): pass
return NewClass
@decorate
class Foo(object):
def __init__(self, *args, **kwargs):
super(Foo, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
谢谢,米夏?
编辑 1
感谢 Mike Boers 的回答,我意识到正确的问题是我应该怎么做才能使 super(Foo, self) 指向正确的类。
我也有两个限制。我想要调用Foo.__init__方法,但无法更改Foo类定义。
编辑 2
我已经解决了这个问题。我修改了装饰器函数体。我不返回新班级。而不是我包装原始类的方法。