出于样式原因,我试图在类Foo之前保留myDict的定义。因为尚未定义Foo,这将导致NameError。
from typing import Dict
myDict: Dict[str, Foo] = {}
class Foo:
pass
将myDict移到Foo下方显然可以解决此问题,但是有什么办法可以使myDict及其注释保持在顶部?
答案 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'
。