编辑: 作为练习,我需要在一个函数的结果前面加上一个字符串,这个函数将在第二时刻定义。我虽然使用装饰工,但我显然错了;有什么建议要做吗?你知道吗
旧的:
def my_decorator(func):
def wrapped(*args, **kwargs):
return "hello {0}".format(func(*args, **kwargs))
return wrapped
@my_decorator
def myfunc():
return "boy"
def myfunc():
return "girl"
if __name__ == "__main__":
print(myfunc())
这个代码将打印“女孩”,我想它打印“你好女孩”。 有什么办法吗?你知道吗
decorator用包装的版本替换函数。如果你再换一次,装饰版就不见了。你知道吗
你真的不该这么做。但请记住,decorator只是一个包装器;如果您要动态替换函数,那么首先不要对它们进行装饰,只需在调用包装器时应用它:
如果您显式地将decorator应用于重新定义的函数,则decorator可以工作,正如其他人所提到的:
如果不能静态地执行此操作,则仍然可以使用decorator代码来执行以下功能:
相关问题 更多 >
编程相关推荐