我嘗試定義類裝飾器。我在裝飾課上用__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