Итак, вот что у меня есть:Переопределение декоратора абстрактного класса в унаследованной классе
Абстрактный класс:
class DataWrapper(object):
def decorator(f):
def preprocess(*args, **kwargs):
return f(*args, **kwargs)
return preprocess
@decorator
def datamethod1(self, ..): ...
@decorator
def datamethod2(self, ..): ...
наследование Класс:
class DataManipulation(DataWrapper):
def __init__(self, ..): ..
def decorator(f):
print 'here'
def preprocess(*args, **kwargs):
ret = f(*args, **kwargs)
return preprocess
По существу у меня есть куча общих методов данных (определенных в DataWrapper), которые используются различными классами. Я разрешаю, чтобы декоратор был определен для выполнения любой предварительной/последующей обработки данных перед возвратом, который определен в DataWrapper так же, как местозаполнитель.
К сожалению, декоратор не переопределяется, когда я пытаюсь определить его в унаследованных классах; то есть «здесь» не печатается.
Я увидел this и попробовал добавить переопределяющий декоратор в унаследованном классе, и пока нет ошибки, «здесь» все еще не печатается.
У кого-нибудь есть предложения?
Clever, и работает, как ожидалось. Большое спасибо. – user1769889