小编RxH*_*EAD的帖子

带参数的自定义类型提示

我时不时地发现自己定义一个带有参数的函数,该参数可以是类型的单个实例,也可以是同一类型的序列。当类型本身已经很复杂时,类型提示可能很快就会变得模糊。

而不是类似的东西

my_dicts: Union[Dict[str, int], Sequence[Dict[str, int]]] 
Run Code Online (Sandbox Code Playgroud)

我想定义一个快捷方式,这样我就可以输入

my_dicts: SingleOrSequence[Dict[str, int]] 
Run Code Online (Sandbox Code Playgroud)

我该如何以最Pythonic的方式解决这个问题?另请记住,为了与其他类型保持一致,调用签名应类似于上面的内容,即指定自定义类型名称并直接用方括号传递包含的类型。

我能想到的最好的看起来像这样:

import typing

class SingleOrSequenceClass():
    @staticmethod
    def __getitem__(typ):
        return typing.Union[typ, typing.Sequence[typ]]
    
SingleOrSequence = SingleOrSequenceClass() 
Run Code Online (Sandbox Code Playgroud)

这确实有效,但特别是必须实例化 SingleOrSequenceClass 并不适合我。关于如何改进这一点有什么建议吗?打字模块本身是否为此提供了任何优雅的解决方案?

python type-hinting python-typing

1
推荐指数
1
解决办法
2265
查看次数

标签 统计

python ×1

python-typing ×1

type-hinting ×1