任何人都可以解釋爲什麼下面的代碼不起作用?我試圖讓一個類裝飾器提供新的方法__repr__
和__init__
,如果我用它裝飾一個類,只有方法似乎被定義。我設法通過使裝飾者破壞性地修改原始類而不是創建新類(例如,它定義新方法,然後僅使用cl.__init__ = __init__
來覆蓋它們)來修復原始問題。現在我只是好奇爲什麼基於子類的嘗試不起作用。Python中的高階類
def higherorderclass(cl):
@functools.wraps(cl)
class wrapped(cl):
def __init__(self, *args, **kwds):
print 'in wrapped init'
super(wrapped, self).__init__(*args, **kwds)
def __repr__(self):
return 'in wrapped repr'
return wrapped
對於初學者來說,'@ functools.wraps()'適用於*功能裝飾*只。 –