Chr*_*ing 5 python python-typing
更具体:
要解决诸如如何使用封闭类的类型键入提示方法之类的问题?
PEP 673介绍typing.Self。PEP 是一个草案,但目前它是 Typing_extensions 4.0.0 中的实验类型
我尝试在 python 3.8 中使用它
@dataclasses.dataclass
class MenuItem:
url: str
title: str
description: str = ""
items: typing.List[typing_extensions.Self] = dataclasses.field(default_factory=list)
Run Code Online (Sandbox Code Playgroud)
但它提高了
TypeError: Plain typing_extensions.Self is not valid as type argument
Run Code Online (Sandbox Code Playgroud)
我可以只使用文字字符串“MenuItem”来代替。但我想知道为什么这不起作用。
是的,可以,但要注意该包的用途:
该
typing_extensions模块有两个相关的用途:
- 允许在较旧的 Python 版本上使用新类型系统功能。例如,
typing.TypeGuard它是 Python 3.10 中的新功能,但typing_extensions也允许使用早期 Python 版本的用户使用它。- 在新型系统 PEP 被接受并添加到
typing模块之前,对其进行实验。
这个特定的情况是typing_extensions 中的一个错误。计划在 4.0.1 中修复。