![](/img/trans.png)
[英]How can I make @decorator and @decorator(args) share the same name?
[英]How can I use a decorator to modify the type of *args?
我想用一个@decorator
,让我能够访问' - '.join(args)
的args
,如下式所示。 这可能是使用元类吗?
def a(*args):
print(args)
a(1, 2, 3)
# (1, 2, 3)
@magic
def b(*args):
print(args)
b(1, 2, 3)
# 1 - 2 - 3
你可以近距离接触:
def magic(func):
def wrapper(*args):
return func(' - '.join(map(str, args)))
return wrapper
但这打印出来('1 - 2 - 3',)
因为b
的主体因为*args
而将args
视为元组,我怀疑装饰者可以解决这个问题。 如果身体像print(args[1])
你会发生什么?
所以问题的一部分是你在需要字符串的地方使用整数,所以将它们转换成字符串然后使用join函数。
def magic(func):
def wrapper(*args):
return ' - '.join(map(str, args))
return wrapper
@magic
def a(*args):
return 'Arguments were {}.'.format(args)
print(a(1, 2, 3))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.