在阅读了this article之后,我理解了装饰器以及为什么我们使用装饰器而不是子类。在那里,他们编写了以下示例,其中介绍了包装器的需求:
def uppercase_decorator(function):
def wrapper():
funct = function()
make_uppercase = funct.upper()
return make_uppercase
return wrapper
然而,我可以这样写“同样的东西”(我希望你会说它不是):
def uppercase_decorator(function): #previously 'function' was called 'message' but 'function' is clearer for comparison.
make_uppercase = function().upper
return make_uppercase
调用salute()
时:
@uppercase_decorator
def salute():
return 'Hi all!'
def decorateIt(fn):
toUpper = fn().upper
return toUpper
def decorateW(fn):
def wrapper():
funct = fn()
toUpper = funct.upper()
return toUpper
return wrapper
import random, string
@decorateIt
def sayGarbage():
return "".join(random.choice(string.ascii_lowercase) for i in range(6))
sayGarbage()
为什么会这样呢?
https://stackoverflow.com/questions/56674710
复制相似问题