程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了推迟子类的注释大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决推迟子类的注释?

开发过程中遇到推迟子类的注释的问题如何解决?下面主要结合日常开发的经验,给出你关于推迟子类的注释的解决方法建议,希望对你解决推迟子类的注释有所启发或帮助;

似乎 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,请注明来意。
标签: