Есть ли аналог С# для декораторов функции Python? Похоже, что это возможно с атрибутами и средой отражения, но я не вижу способа заменить функции во время выполнения.
Декораторы Python обычно работают следующим образом:
class decorator(obj):
def __init__(self, f):
self.f = f
def __call__(self, *args, **kwargs):
print "Before"
self.f()
print "After"
@decorator
def func1():
print "Function 1"
@decorator
def func2():
print "Function 2"
Вызов func1 и func2 приведет к тому, что
Before Function 1 After Before Function 2 After
Идея заключается в том, что декораторы позволят мне легко добавлять общие задачи на точки входа и выхода из нескольких функций.