我有以下结构
在 _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
。为什么即使完全是胡说八道,它也不完全按照我写的那样将其存储为字符串?保证它是有效表达式而不仅仅是任意表达式的注释的用途是什么