0

我有以下结构

在 _base.py

class Base():
 ...

现在在 code.py

import typing

if TYPE_CHECKING:
    from _base import Base


    def foo(arg:Base):
       ...

Python 抛出一个NameErrorBase但我不想导入它。我没有真正的理由。特别是如果foo()甚至没有做任何事情,arg而是将其进一步发送到另一个模块。加载周期导入 ( ) 涵盖了类型检查器if TYPE_CHECKING:

为什么 python 会评估类型注释呢?我不明白为什么它必须告诉它是什么Base。为什么即使完全是胡说八道,它也不完全按照我写的那样将其存储为字符串?保证它是有效表达式而不仅仅是任意表达式的注释的用途是什么

4

0 回答 0