所以我正在尝试创建一个“动态”文档字符串,它是这样的:
ANIMAL_TYPES = ["mammals", "reptiles", "other"]
def func(animalType):
""" This is a sample function.
@param animalType: "It takes one of these animal types %s" % ANIMAL_TYPES
"""
基本上让 @param animalType
的文档字符串显示 ANIMAL_TYPES
有什么;这样当更新这个变量时,文档字符串将自动更新。
不幸的是,它似乎不起作用。有谁知道是否有办法实现这一目标?
原文由 Jack Z 发布,翻译遵循 CC BY-SA 4.0 许可协议
三引号字符串是一个大字符串。他们内部没有任何评估。
%
部分是字符串的全部部分。您需要让它对实际字符串进行操作。不过,我不确定这是否会正常工作;文档字符串有点神奇。这是 行不通 的;文档字符串在编译时被评估(作为函数中的第一条语句,假设它是一个字符串文字——一旦它得到
%
其中它不仅仅是一个字符串文字),字符串格式化发生在运行时,所以__doc__
将为空:如果您想以这种方式工作,则需要在定义函数后执行
func.__doc__ %= {'ANIMAL_TYPES': ANIMAL_TYPES}
。请注意,这将在python -OO
上中断,如果您没有检查__doc__
被定义为-OO
条文档字符串。无论如何,这不是标准技术;标准技术是引用适当的常量:“采用 ANIMAL_TYPES 中的一种动物类型”,或类似的。