Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 注释稍后定义的类的类型(正向引用)_Python_Python 3.x_Annotations - Fatal编程技术网

Python 注释稍后定义的类的类型(正向引用)

Python 注释稍后定义的类的类型(正向引用),python,python-3.x,annotations,Python,Python 3.x,Annotations,出于风格的原因,我试图在Foo类之前保留myDict的定义。这将导致名称错误,因为尚未定义Foo 从键入import Dict开始 myDict:Dict[str,Foo]={} Foo类: 通过 将myDict移到Foo下面显然可以解决这个问题,但是有没有办法让myDict及其注释保持在最上面?您可以引用如下: from typing import Dict myDict: Dict[str, 'Foo'] = {} class Foo: pass 有关更多信息,请参阅。根据您

出于风格的原因,我试图在Foo类之前保留myDict的定义。这将导致名称错误,因为尚未定义Foo

从键入import Dict开始
myDict:Dict[str,Foo]={}
Foo类:
通过

将myDict移到Foo下面显然可以解决这个问题,但是有没有办法让myDict及其注释保持在最上面?

您可以引用如下:

from typing import Dict

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

class Foo:
    pass

有关更多信息,请参阅。

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

from __future__ import annotations
然后您的代码按原样运行。引入了对注释的延迟评估,这意味着您不需要使用原始方法将类型置于引号中,例如
'Foo'