class Vector: # VarIoUs irrelevant implementation details def __add__(self,other: Vector) -> Vector: # More implementation details....
但是,当我尝试导入它时,会吐出一个nameError:名称’Vector’未定义.我承认这个问题已经以here的形式得到了回答,但它似乎并没有完全为我的情况提供答案.
我想知道的是什么:
>我在这个文件中字面上定义了这个类.为什么说这个名字没有定义?
>如何以可以用于注释(作为类型)的方式定义Vector?
只需使用带有名称的字符串:
class Vector: # VarIoUs irrelevant implementation details def __add__(self,other: 'Vector') -> 'Vector': # More implementation details....
这不会影响IDE查看声明的方式;加载整个模块后,将查找字符串,并在当前上下文中将其解析为有效的Python表达式.由于在加载整个模块后类Vector存在,因此可以将字符串’Vector’正确转换为类对象.
另见specification on forward references:
总结When a type hint contains names that have not been defined yet,that deFinition may be expressed as a string literal,to be resolved later.
[…]
The string literal should contain a valID Python Expression […] and it should evaluate without errors once the module has been fully loaded.
以上是内存溢出为你收集整理的python – 未在类型注释中定义的名称全部内容,希望文章能够帮你解决python – 未在类型注释中定义的名称所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)