获取python省略号(​​...)类型而不必将其定义为`type(...)`

Giu*_*pox 1 python ellipsis python-3.x

有没有办法获得python的Ellipsis类型?我看到了这样做type(Ellipsis)type(...)返回<class 'ellipsis'>,但是通过编写x = ellipsis()它似乎 ifellipsis不是默认定义的数据类型 ( NameError: name 'ellipsis' is not defined)。
我认为builtins内置模块可以为我的问题提供解决方案,但以下内容也会引发错误。

import builtins
_ellipsis = builtins.ellipsis    # AttributeError: module 'builtins' has no attribute 'ellipsis'
Run Code Online (Sandbox Code Playgroud)

我真正需要的是做这样的事情:

from typing import Union

def f(x: Union[str, type(...)]):
    pass
Run Code Online (Sandbox Code Playgroud)

显然以前的作品,但我想有一个更漂亮的解决方案,只是 type(...)

For*_*Bru 5

根据文档

Ellipsis

与省略号文字“...”相同。特殊值主要与用户定义的容器数据类型的扩展切片语法结合使用。Ellipsistypes.EllipsisType类型的唯一实例。

因此,在 Python 3.10 (!) 中,您可以使用types.EllipsisType来表示这种类型。

否则,您可以像这样定义自己的变量:

EllipsisType = type(...)
Run Code Online (Sandbox Code Playgroud)

然后在类型声明中使用它