5
In python, c'è un modo per far passare un decoratore su un metodo astratto alle implementazioni derivate?Decoratori su metodi astratti
Per esempio, in
import abc
class Foo(object):
__metaclass__ = abc.ABCMeta
@abc.abstractmethod
@some_decorator
def my_method(self, x):
pass
class SubFoo(Foo):
def my_method(self, x):
print x
SubFoo
's my_method
non andranno decorato con some_decorator
per quanto posso dire. C'è un modo in cui posso farlo accadere senza dover decorare individualmente ogni classe derivata di Foo
?
Solo con grande magia, temo. È un'alternativa chiamare il metodo astratto '_my_method' e avere un' my_method' non astratto, non sovrascritto, che fondamentalmente fa 'some_decorator (self._my_method) (* args, ** kwds)'? – delnan
@delnan Hmm, sì, speravo che potesse esserci una soluzione da qualche parte tra la grande metaclatura magica e il tuo buon suggerimento che è un po 'più pulito. Ma farò quello che devo fare immagino. –