我有一個裝飾功能(簡化版):添加裝飾功能的一類
class Memoize:
def __init__(self, function):
self.function = function
self.memoized = {}
def __call__(self, *args, **kwds):
hash = args
try:
return self.memoized[hash]
except KeyError:
self.memoized[hash] = self.function(*args)
return self.memoized[hash]
@Memoize
def _DrawPlot(self, options):
do something...
現在我想將這個方法添加到esisting學前班。
ROOT.TChain.DrawPlot = _DrawPlot
當我把這個方法:
chain = TChain()
chain.DrawPlot(opts)
我:
self.memoized[hash] = self.function(*args)
TypeError: _DrawPlot() takes exactly 2 arguments (1 given)
爲什麼沒有傳播的自我?
總是從'object'繼承,而不是什麼都不做,所以你使用的是新式的類。 – 2010-03-23 16:27:01
如果您在此問題上有任何選擇,請勿使用大寫的首字母來命名方法。使用像'_draw_plot'(由PEP 8推薦)或'_drawPlot'這樣的名字。 – 2010-03-23 17:19:01
我的回答是誤導,所以它得到了印章。感謝Mike的反饋! – 2010-03-23 17:39:39