我正在使用输入的python。大部分情况下运作良好,但我有 由于顺序依赖性,我对很多代码进行了重新排序。例如 考虑这个玩具代码:
from typing import ClassVar, List
class MyFirstClass:
attr: MyClass
class MyClass:
# You can optionally declare instance variables in the class body
attr: int
class MySecondClass:
attr: MyClass
由于未声明MyClass
,因此无法正确编译
在MyFirstClass中:
Traceback (most recent call last):
File "Temp.py", line 5, in <module>
class MyFirstClass:
File "Temp.py", line 6, in MyFirstClass
attr: MyClass
NameError: name 'MyClass' is not defined
令人讨厌。有没有办法解决?难道我做错了什么? 我迄今为止提出的最好的方法是,首先定义MyClass两次 没有身体的时间。
答案 0 :(得分:0)
解决方法是将来导入:
from __future__ import annotations
这会导致Python在运行时不评估注释,而只是将它们作为字符串附加到__annotations__
。
此更改在PEP 563 - Postponed evaluation of annotations中进行了描述。请注意,它需要Python 3.7 +。