
您有一份前瞻性声明;函数(作为方法绑定)在类创建 之前
创建,因此名称
Vector尚不存在。只有在所有类体都已执行后,Python才能创建
class对象并将名称绑定到该对象
Vector。
只需使用带有名称的字符串即可:
class Vector: # Various irrelevant implementation details def __add__(self, other: 'Vector') -> 'Vector': # More implementation details....
这不会影响您的IDE看到声明的方式。加载整个模块后,将查找字符串,并在当前上下文中将其解析为有效的Python表达式。由于
Vector一旦加载了整个模块,该类就存在了,因此
'Vector'可以将字符串正确地转换为类对象。
另请参阅前向参考中的规范:
当类型提示包含尚未定义的名称时,该定义可以表示为字符串文字,以便稍后解析。
[…]
字符串文字应包含有效的Python表达式,并且在模块完全加载后,其值应无错误。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)