python – 未在类型注释中定义的名称
我正在创建一个
python线性代数模块,用于娱乐和练习语言.我最近尝试向模块添加类型注释,如下所示:
class Vector: # Various irrelevant implementation details def __add__(self,other: Vector) -> Vector: # More implementation details.... 但是,当我尝试导入它时,会吐出一个NameError:名称’Vector’未定义.我承认这个问题已经以here的形式得到了回答,但它似乎并没有完全为我的情况提供答案. 我想知道的是什么: >我在这个文件中字面上定义了这个类.为什么说这个名字没有定义? 解决方法
你有前瞻性声明;函数(作为方法绑定)是在类之前创建的,因此名称Vector尚不存在.只有当所有类主体都已执行时,Python才能创建类对象并将名称Vector绑定到它.
只需使用带有名称的字符串: class Vector: # Various irrelevant implementation details def __add__(self,other: 'Vector') -> 'Vector': # More implementation details.... 这不会影响IDE查看声明的方式;加载整个模块后,将查找字符串,并在当前上下文中将其解析为有效的Python表达式.由于在加载整个模块后类Vector存在,因此可以将字符串’Vector’正确转换为类对象. 另见specification on forward references:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |