有人可以彻底解释以下代码的最后一行:
def myMethod(self):
# do something
myMethod = transformMethod(myMethod)
Run Code Online (Sandbox Code Playgroud)
为什么要通过另一种方法传递方法的定义?那怎么会起作用呢?提前致谢!
这是函数包装的一个示例,即当您有一个函数接受函数作为参数,并返回一个修改原始函数行为的新函数时。
以下是如何使用它的示例,这是一个简单的包装器,仅在每次调用时打印“Enter”和“Exit”:
def wrapper(func):
def wrapped():
print 'Enter'
result = func()
print 'Exit'
return result
return wrapped
Run Code Online (Sandbox Code Playgroud)
以下是如何使用它的示例:
>>> def say_hello():
... print 'Hello'
...
>>> say_hello() # behavior before wrapping
Hello
>>> say_hello = wrapper(say_hello)
>>> say_hello() # behavior after wrapping
Enter
Hello
Exit
Run Code Online (Sandbox Code Playgroud)
为了方便起见,Python 提供了装饰器语法,它只是函数包装的简写版本,在函数定义时执行相同的操作,以下是如何使用它:
>>> @wrapper
... def say_hello():
... print 'Hello'
...
>>> say_hello()
Enter
Hello
Exit
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |