我有一组模块X中的功能,都共享一组输入。因此,我想使用字符串格式来用长字符串替换标识符。对于这一点,我使用的是装饰,比如,从装饰者,干净地访问目标功能模块命名空间
inputs = """Some long string"""
@expanddoc
def spam(...):
"""This is a silly function.
{inputs}
:returns: Something useless
"""
@expanddoc
def eggs(...):
"""This is an even sillier function.
{inputs}
:returns: Something pointless
"""
在那里我有功能expanddoc
,在模块Y规定,如,
def expanddoc(func):
func.__doc__ = func.__doc__.format(**globals()
return func
但**globals()
指Y
名字空间,而不是到X
的命名空间。我如何干净地访问从装饰器expanddoc
中定义的任何模块func
的命名空间?
但是'func'可以从任何模块来了,它'不一定是'X' - 我不能在'expanddoc'中硬编码,因为我还不知道。 – gerrit
@gerrit你是对的。 – Robert