我有以下结构
在_base.py中
class Base():
...
和现在的code.py中
import typing
if TYPE_CHECKING:
from _base import Base
def foo(arg:Base):
...
中,Python抛出了一个 NameError
关于 Base
但我不想导入它。我没有一个真正的理由。特别是如果 foo()
甚至不做任何事情 arg
但进一步将其发送到另一个模块。类型检查器由负载循环导入( if TYPE_CHECKING:
).
为什么python要评估类型注释?我不明白为什么它要告诉你什么是 Base
是。为什么它不完全按照我写的字符串存储,即使它是完全的废话?注释的用法是什么,保证它是有效的表达式,而不仅仅是一个任意的表达式?