¿cómo se puede acceder al decorador desde una clase base en un niño?Acceder a un decorador en una clase para padres desde el niño en Python
Supuse (erróneamente) que el ffg. funcionaría:
class baseclass(object):
def __init__(self):
print 'hey this is the base'
def _deco(func):
def wrapper(*arg):
res = func(*arg)
print 'I\'m a decorator. This is fabulous, but that colour, so last season sweetiedarling'
return res
return wrapper
@_deco
def basefunc(self):
print 'I\'m a base function'
Esta clase funciona bien, pero entonces crear una clase hija hereda de esto:
class otherclass(baseclass):
def __init__(self):
super(otherclass, self).__init__()
print 'other class'
@_deco
def meh(self):
print 'I\'m a function'
Esto no incluso importar correctamente, mucho menos correr. @_deco no está definido. Probar baseclass._deco arroja un error de método _deco() de método libre, que no es realmente sorprendente.
Cualquier idea de cómo hacer esto, realmente me gustaría encapsular el decorador en la clase, pero no estoy casado con la idea y tendría que llamarlo en la base & la clase infantil.
El caso de uso para esto es un decodificador de tiempo aproximado para un controlador de pilón. Por lo tanto, debe ser accesible desde la clase base porque hay funciones allí que tendrán que ser cronometradas, y las funciones en la clase secundaria que necesitan ser temporizadas. Supongo que la forma más sencilla sería simplemente arrancarlo de la clase. – dochead
¿Podría corregir su formateo? El 'def __init__' de su clase está en la misma sangría que la definición de la clase. – MattH