我正在为我的 Python 模块(使用 Sphinx 和 reST)编写文档,并且我发现当交叉引用其他 Python 对象(模块、类、函数等)时,完整的对象名称最终会非常长。通常它超过 80 个字符,我想不惜一切代价避免。
这是一个例子:
def exampleFunction():
'''Here is an example docstring referencing another
:class:`module1.module2.module3.module4.module5.ReallyLongExampleClassName`
'''
问题是,在为RealLongExampleClassName类创建文档时,我为 full path name 生成了它module1.module2.module3.module4.module5.ReallyLongExampleClassaName
。
我想知道有没有办法解决这个问题?我尝试了以下方法,但没有成功:
1)在模块名称中间添加换行符。例子:
:class:`module1.module2.module3.module4.
module5.ReallyLongExampleClassName`
2) 以不同的(但仍然是 Python 可导入的)方式引用类名。例子:
:class:`module1.module2.ReallyLongClassName`
我相信,由于文档ReallyLongClassName
与完整路径名相关联,Sphinx 无法将缩短版本与完整命名版本相关联。
编辑 2012 年 4 月 5 日:
根据 j13r 的回答/建议(见下文),我尝试了以下方法:
:class:`module1.module2.module3.module4.module5\
ReallyLongExampleClassName`
这很成功。让它工作的唯一警告是,第二行之前不能有空格(在文档字符串中使用它时非常令人沮丧)。因此,要使我的原始示例工作,它看起来像:
def exampleFunction():
'''Here is an example docstring referencing another
:class:`module1.module2.module3.module4.module5.\
ReallyLongExampleClassName`
'''
好看,也丑。如果您要在之前放置空格ReallyLongExampleClassName
以将其缩进到与它上面的行相同的级别,则输出将包含空格,因此 Sphinx 将尝试引用类似module1.module2.module3.module4.module5.ReallyLongExampleClassName
.
我还应该注意,我尝试了其他两种变体,但没有奏效:
# Note: Trying to put a space before the '\'
:class:`module1.module2.module3.module4.module5. \
ReallyLongExampleClassName`
# Note: Trying to leave out the '\'
:class:`module1.module2.module3.module4.module5.
ReallyLongExampleClassName`
我正在寻找一个不涉及破坏文档字符串格式的解决方案,但我想它会这样做......我认为我实际上更喜欢超过 80 个字符的行。
感谢 j13r 的回答!