gpt4 book ai didi

类返回类型中的python函数注释是类raise undefined

转载 作者:太空狗 更新时间:2023-10-30 00:53:46 26 4
gpt4 key购买 nike

Python 3.6.1,有几种类型提示的方式,在文档字符串或注解中。我如何使用注释实现这一点?

假设我有一个类,它有一个类方法 load 可以从某个地方加载数据,例如 json 或数据库,并构造并返回此类的实例。

class Foo:

@classmethod
def load(cls, bar) -> Foo:
pass

我认为这很简单,但是 python 解释器引发了一个错误,即 Foo 未定义。

我知道原因,因为python加载Foo的load函数签名时,Foo类的定义还没有完成,所以Foo还没有定义。

这是函数注解的缺点吗?我能找到一些方法来实现这个目标,而不是使用文档字符串来键入提示吗,因为我真的很喜欢函数注释的清晰度。

最佳答案

您可以为 forward references 使用字符串文字:

import typing


class Foo:

@classmethod
def load(cls, bar) -> 'Foo':
pass


class Bar:

@classmethod
def load(cls, bar) -> Foo:
pass


print(typing.get_type_hints(Foo.load)) # {'return': <class '__main__.Foo'>}
print(typing.get_type_hints(Bar.load)) # {'return': <class '__main__.Foo'>}

关于类返回类型中的python函数注释是类raise undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43883100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com