可以计算 Python 文档字符串(f-string 或 %-expression)吗?

Can a Python docstring be calculated (f-string or %-expression)?

是否可以计算 Python 文档字符串?我的文档字符串中有很多重复的东西,所以我想使用 f-strings 或 %-style 格式表达式。

当我在文档字符串的位置使用 f 字符串时

我知道如何在导入后处理文档字符串,但这不适用于对象 'doc' 字符串,它被 sphinx 识别但不是真正的 __doc__对象。

Python 中的文档字符串必须是常规字符串文字。

这很容易测试 - 以下程序不显示文档字符串:

BAR = "Hello world!"

def foo():
        f"""This is {BAR}"""
        pass

assert foo.__doc__ is None
help(foo)

Python 语法文档说 the docstring must be a "string literal", and the tail end of the f-string reference 说它们“不能用作文档字符串”。

很遗憾,您必须使用 __doc__ 属性。

但是,您应该能够使用装饰器来读取 __doc__ 属性并将其替换为您想要的任何内容。