tengo una función decorada (versión simplificada):añadir una función de decorar a una clase
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...
ahora quiere añadir este método a una clase de pre-esisting.
ROOT.TChain.DrawPlot = _DrawPlot
cuando llamo a este método:
chain = TChain()
chain.DrawPlot(opts)
que tengo:
self.memoized[hash] = self.function(*args)
TypeError: _DrawPlot() takes exactly 2 arguments (1 given)
¿por qué no se propagan auto?
Siempre herede de 'object' en lugar de nada para que esté utilizando clases de estilo nuevo. –
No nombre métodos con mayúsculas iniciales si tiene alguna opción en la materia. Use nombres como '_draw_plot' (recomendado por PEP 8) o' _drawPlot'. –
Mi respuesta fue engañosa, por lo que obtuvo el corte. Gracias por los comentarios Mike! –