键入注释稍后定义的类的信息(转发参考)

时间:2019-12-06 04:42:03

标签: python python-3.x annotations

出于样式原因,我试图在类Foo之前​​保留myDict的定义。因为尚未定义Foo,这将导致NameError。

from typing import Dict

myDict: Dict[str, Foo] = {}

class Foo:
    pass

将myDict移到Foo下方显然可以解决此问题,但是有什么办法可以使myDict及其注释保持在顶部?

2 个答案:

答案 0 :(得分:4)

您可以引述如下:

from typing import Dict

myDict: Dict[str, 'Foo'] = {}

class Foo:
    pass

有关更多信息,请参见https://www.python.org/dev/peps/pep-0484/#forward-references

答案 1 :(得分:1)

根据您正在运行的python(Py3.7 +)版本,您可以:

from __future__ import annotations

然后您的代码按原样运行。 PEP 563引入了对批注的延迟评估,这意味着您无需使用将类型加引号的原始方法,例如'Foo'