有没有C#的函数修饰符与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
这种方法可以让我轻松地在多个函数的入口和出口添加常见任务。