大佬教程收集整理的这篇文章主要介绍了推迟子类的注释,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
似乎 PEP 563 中的类型注释的延迟评估不适用于子类的定义。
此代码有效:
from __future__ import Annotations
from tyPing import List
class Foo:
pass
class FooList(List[Foo]):
pass
f = FooList()
另一方面,此代码因 nameError: name 'Foo' is not defined
失败:
from __future__ import Annotations
from tyPing import List
class FooList(List[Foo]):
pass
class Foo:
pass
f = FooList()
这当然是一个玩具示例。我正在处理的代码更复杂,并且类之间存在依赖关系,这不会让我更改它们的顺序。处理此问题的最佳方法是什么?
在 class FooList(List[Foo])
中,List[Foo]
不是注释。注释是一种特定的语法元素,在 :
或 ->
之后使用。
您需要手动为 Foo
使用前向引用:
class FooList(List['Foo']):
...
以上是大佬教程为你收集整理的推迟子类的注释全部内容,希望文章能够帮你解决推迟子类的注释所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。