所以我的问题专门针对下面示例顶部的装饰器。我不明白 lowercasedecorator 函数的第 3 行。我很困惑为什么它返回一个列表,如果它在那些方括号中,就意味着它是一个列表,对吧?另外,我不完全理解“func(*args)”那一行的结尾,这是否意味着“func”的任意参数(在本例中是 displayPeople)?
def lowercasedecorator(func):
def wrapper(*args):
return [i.lower() for i in func(*args)]
return wrapper
class People():
totalpeople = 0
def __init__(self, name, age, phone):
self.name=name
self.age=age
self.phone=phone
People.totalpeople += 1
@lowercasedecorator
def displayPeople(self):
return self.name, self.age, self.phone
ben = People("bEn", "20", "5034950293")
print ben.displayPeople()
请您参考如下方法:
def wrapper(*args):
return [i.lower() for i in func(*args)]
*调用 func 的语法(即 displayPeople )传递与 wrapper 相同的位置参数收到。
wrapper确实返回一个列表。
由于装饰器的工作方式,函数 wrapper使用 func = displayPeople 创建是 displayPeople 的装饰版本.
所以,装饰器的效果就是displayPeople的装饰版调用未修饰的版本,小写返回值,并将它们作为列表返回。
