5
В python существует ли способ сделать декоратор абстрактного метода переносимым на производную реализацию (ы)?Декораторы по абстрактным методам
Например, в
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
не будут украшены some_decorator
насколько я могу сказать. Есть ли способ сделать это без индивидуального украшения каждого производного класса Foo
?
Только с обширной магией, боюсь. Альтернативно ли вызывать абстрактный метод '_my_method' и иметь не абстрактный, не переопределенный' my_method', который в основном выполняет 'some_decorator (self._my_method) (* args, ** kwds)'? – delnan
@ delnan Хм, да, я надеялся, что может быть какое-то решение между обширной магией метакласса и вашим хорошим предложением, которое немного чище. Но я сделаю то, что должен сделать, я думаю. –