gpt4 book ai didi

python方法参数注解类

转载 作者:太空宇宙 更新时间:2023-11-03 18:04:14 25 4
gpt4 key购买 nike

以下内容会导致导入错误,因为 Foo 尚未定义:

class Foo:
def __init__(self, rhs: Foo):
pass

有没有办法注释 rhs 以指示它应该是 Foo 的另一个实例?

最佳答案

不是真的。 Python 无法像 C++ 那样在定义类之前声明它。

如果您只是想让人们看到 rhs 应该是 Foo,那么您始终可以使用字符串文字:

def __init__(self, rhs: 'Foo'):
# or
def __init__(self, rhs: "<class '__main__.Foo'>"):

这使您的意图非常清晰,并且还允许您让注释说出您想要的任何内容。

但是,如果您想要在 Foo.__init____annotations__ 属性内真正引用 Foo 类,那么您将需要手动定义类后更改此属性:

class Foo:
def __init__(self, rhs):
pass

Foo.__init__.__annotations__['rhs'] = Foo
print(Foo.__init__.__annotations__)
# {'rhs': <class '__main__.Foo'>}

但我个人只会使用第一个解决方案。函数注释的主要目的是记录您的函数。因此,执行此操作的字符串文字可以满足注释的目的。

关于python方法参数注解类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27176874/

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