在Python文档中保持别名类型简单?

2024-10-02 02:35:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用typing模块来记录我的Python包,我有很多情况,其中函数参数允许使用几种不同的类型。例如,您可以传递一个数字、一个信封对象(我的包中的一个类),或者传递一个从中构造信封的数字列表,或者传递一个从中构造信封的数字列表。因此,我创建了一个别名类型,如下所示:

NumberOrEnvelope = Union[Sequence[Real], Sequence[Sequence[Real]], Real, Envelope]

然后我编写函数:

def example_function(parameter: NumberOrEnvelope):
    ...

我觉得这很好。然而,当我使用Sphinx创建文档时,我最终得到了一个可怕的无法读取的函数签名:

示例_函数(参数:Union[Sequence[numbers.Real]、Sequence[Sequence[numbers.Real]、numbers.Real、expenvelope.envelope.envelope])

当我开始尝试使用PyCharm中的函数时,也会弹出提示

有什么办法可以让我把它留作“号码信封”吗。理想情况下,这也会在文档中链接到对什么是“NumberOrEnvelope”的澄清,尽管即使没有,也会比现在出现的要好得多


Tags: 模块函数文档typing类型列表记录情况
2条回答

对此的支持似乎正在进行中

  • ^{}

  • 这个问题可以通过最近对^{}的更新(审查中)来解决

如果您希望尽快修复,您可以尝试使用该构建

编辑:遗憾的是,这不太管用

经过一番搜索,我找到了我要找的东西。而不是:

NumberOrEnvelope = Union[Sequence[Real], Sequence[Sequence[Real]], Real, Envelope]

我发现您可以创建自己的复合类型来完成相同的任务:

NumberOrEnvelope = TypeVar("NumberOrEnvelope", Sequence[Real], Sequence[Sequence[Real]], Real, Envelope)

正如我所希望的,它在文档中显示为“NumberOrEnvelope”

相关问题 更多 >

    热门问题