小编Mic*_*ula的帖子

超出了 Python 类装饰器和最大递归深度

我尝试定义类装饰器。我__init__在装饰类中的方法有问题。如果__init__方法调用超出superRuntimeError 最大递归深度,则会引发。

代码示例:

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

我已经解决了这个问题。我修改了装饰器函数体。我不返回新班级。而不是我包装原始类的方法。

python class decorator

4
推荐指数
2
解决办法
1881
查看次数

标签 统计

class ×1

decorator ×1

python ×1