我想知道为什么partial
包装方法/函数的元数据(例如__name__
,__doc__
)默认情况下不继承。functools
提供update_wrapper
功能。
为什么它不是默认情况下没有提到任何地方(据我所见),例如这里和许多教程在functools.partial
谈论如何"解决问题"。缺少__name__
.
是否有继承这些信息导致问题/混乱的例子?
考虑一下实际情况:
def add(x, y):
"Adds two numbers"
return x + y
add_5 = partial(add, 5)
如果add_5
将__name__
设置为"add"
,__doc__
设置为"Adds two numbers"
,这真的有意义吗?
partial
创建的可调用对象的行为与原始函数完全不同。如果新的可调用对象继承了一个行为完全不同的函数的名称和文档字符串,这是不合适的。