come si fa ad accedere a un decoratore da una classe base in un bambino?Accesso a un decoratore in una classe genitore dal figlio in Python
Ho assunto (erroneamente) che il ffg. avrebbe funzionato:
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'
Questa classe funziona bene, ma poi ho creare una classe figlia eredita da questo:
class otherclass(baseclass):
def __init__(self):
super(otherclass, self).__init__()
print 'other class'
@_deco
def meh(self):
print 'I\'m a function'
Questo non sarà nemmeno importare correttamente, per non correre da soli. @_deco non è definito. Provando baseclass._deco si genera un errore _deco() del metodo non associato, che non è davvero sorprendente.
Qualsiasi idea di come fare questo, mi piacerebbe davvero per incapsulare il decoratore nella classe, ma io non sono sposato l'idea e avevo bisogno di chiamarlo nella base & la classe figlia.
Il caso di utilizzo per questo è un decoratore di temporizzazione per un controller piloni. Quindi deve essere accessibile dalla base perché ci sono funzioni che devono essere programmate e funzioni nella classe figlio che devono essere sincronizzate. Immagino che il modo più semplice sarebbe quello di strapparlo dalla classe. – dochead
Potresti correggere la tua formattazione? I 'def __init__' della tua classe hanno la stessa indentazione della definizione della classe. – MattH