Про декораторы знают все и как их делать написано много уже где.
Но вот про декораторы в рамках класса с доступом к параметрам класса надо еще поискать.
Декоратор внутри класса может показаться странной штукой, но иногда может пригодиться, чтобы не повторяться в методах.
class A(): bef = 'before' aft = 'after'
def _d(f): def w(*args, **kwargs): self = args[0] print(self.bef) f(*args, **kwargs) print(self.aft) return w
@_d def f(self, a, b): print(a, b)c = A() c.f('function', 'body')
На выходе получим:
before function body after
Теперь можем оборачивать методы нужной нам функциональностью внутри класса с помощью декоратора.
Комментарии