获取 python 省略号 (...) 类型,而无需将其定义为 `type(...)`
Get python ellipsis (...) type without having to define it as `type(...)`
有没有办法获取 python 的 Ellipsis
类型?我看到这样做 type(Ellipsis)
和 type(...)
returns <class 'ellipsis'>
,但是通过写 x = ellipsis()
好像 ellipsis
不是默认定义的数据输入 (NameError: name 'ellipsis' is not defined
).
我认为 builtins
内置模块可以解决我的问题,但以下也会引发错误。
import builtins
_ellipsis = builtins.ellipsis # AttributeError: module 'builtins' has no attribute 'ellipsis'
我真正需要的是做这样的事情:
from typing import Union
def f(x: Union[str, type(...)]):
pass
显然是以前的作品,但我想要一个更高级的解决方案 type(...)
Ellipsis
The same as the ellipsis literal “...”. Special value used mostly in conjunction with extended slicing syntax for user-defined container data types. Ellipsis
is the sole instance of the types.EllipsisType
type.
因此,在 Python 3.10 (!) 中,您可以使用 types.EllipsisType
来表示此类型。
否则,您可以像这样定义自己的变量:
EllipsisType = type(...)
然后在类型声明中使用它
目前,您正在做的是实现它的唯一方法。
在Python 3.10, it will be available in the types模块中。
3.10这里也加了NoneType
,还有NotImplementedType
.
有没有办法获取 python 的 Ellipsis
类型?我看到这样做 type(Ellipsis)
和 type(...)
returns <class 'ellipsis'>
,但是通过写 x = ellipsis()
好像 ellipsis
不是默认定义的数据输入 (NameError: name 'ellipsis' is not defined
).
我认为 builtins
内置模块可以解决我的问题,但以下也会引发错误。
import builtins
_ellipsis = builtins.ellipsis # AttributeError: module 'builtins' has no attribute 'ellipsis'
我真正需要的是做这样的事情:
from typing import Union
def f(x: Union[str, type(...)]):
pass
显然是以前的作品,但我想要一个更高级的解决方案 type(...)
Ellipsis
The same as the ellipsis literal “...”. Special value used mostly in conjunction with extended slicing syntax for user-defined container data types.
Ellipsis
is the sole instance of thetypes.EllipsisType
type.
因此,在 Python 3.10 (!) 中,您可以使用 types.EllipsisType
来表示此类型。
否则,您可以像这样定义自己的变量:
EllipsisType = type(...)
然后在类型声明中使用它
目前,您正在做的是实现它的唯一方法。
在Python 3.10, it will be available in the types模块中。
3.10这里也加了NoneType
,还有NotImplementedType
.