Python 3.7会在类型注解上抛出NameError,但我不想导入定义它的模块。

问题描述 投票:0回答:1

我有以下结构

在_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 是。为什么它不完全按照我写的字符串存储,即使它是完全的废话?注释的用法是什么,保证它是有效的表达式,而不仅仅是一个任意的表达式?

python python-3.7 nameerror type-annotation
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.