raw*_*ang 9 python annotations python-3.x
出于风格原因,我尝试将 myDict 的定义保留在 Foo 类之前。这将导致 NameError 因为 Foo 尚未定义。
from typing import Dict
myDict: Dict[str, Foo] = {}
class Foo:
pass
Run Code Online (Sandbox Code Playgroud)
将 myDict 移到 Foo 下方显然可以解决此问题,但是有什么方法可以将 myDict 及其注释保留在顶部吗?
ACh*_*ion 15
根据您运行的 python (Py3.7+) 版本,您可以:
from __future__ import annotations
Run Code Online (Sandbox Code Playgroud)
然后你的代码按原样运行。PEP 563引入了注释的延迟评估,这意味着您不需要使用将类型放在引号中的原始方法,例如'Foo'。
Ken*_*ama 11
您可以引用如下:
from typing import Dict
myDict: Dict[str, 'Foo'] = {}
class Foo:
pass
Run Code Online (Sandbox Code Playgroud)
请参阅https://www.python.org/dev/peps/pep-0484/#forward-references了解更多信息。
| 归档时间: |
|
| 查看次数: |
1845 次 |
| 最近记录: |