每次我必须引用一个方法,而不是:func:`package.subpackage.module.method`
,特别是对于经常使用的方法。有没有办法以某种方式“注册”package.subpackage
,这样只有module.method
就足够了?(更好的是,package.subpackage.module
,所以method
就足够了,假设没有冲突)
解决方案不应该包括向package
或subpackage
添加目录,但我可以向docs/
添加任何内容。请注意,这里的问题涉及在docstring模块之外定义的method
(否则.method
可以工作)
您可以添加一个简单的扩展来解析您定义的别名。下面的例子是一个简短的概念证明:
现在,所有的引用
:role:`foo.spam`
都将替换为:role:`spam <foo.bar.baz.spam>`
,而不管具体的角色是什么(class
,func
,mod
,无论什么)。当然,这只是一个草稿,未经测试,但你应该了解这个想法。甚至可能是新斯芬克斯扩建项目的良好起点:-)从您看到类、函数或方法的那一刻起,在索引中您就可以省去名称的书写。 例如 不使用完全限定名称编写交叉引用:
你可以简单地写:
请注意,如果交叉引用本地范围之外的内容,则有必要使用点
.
。例如,如果您正在编写交叉引用的类中引用属性或方法,则以下操作不起作用:还请注意,在范围内
:meth:
和:func:
都可以互换工作。但是,在范围之外,您必须使用确切的角色,这取决于您是引用方法还是函数请注意,您可能会发生名称冲突,因为相同的名称可用于不同对象的不同模块中。在这种情况下,您应该使用完全限定名来准确区分所引用的对象
检查索引以验证对象是否已插入其中非常重要(这是由
.rst
文件中的autodoc或domain指令自动完成的)。普通索引将显示“对象名(完全限定名)”,如果它在索引中,则可以交叉引用编辑:下面是一个将
.method
显示为class.method
的解决方法;以上信息适用相关问题 更多 >
编程相关推荐