gpt4 book ai didi

python - 类型自引用类型别名

转载 作者:行者123 更新时间:2023-12-05 07:47:04 27 4
gpt4 key购买 nike

我想要一个引用自身的类型:

SelfReferenceType = Dict[str, Union[str, 'SelfReferenceType']]

使用 python 3.5 和最新的 mypy 我得到:

test.py:1: error: Invalid type "test.SelfReferenceType"

有没有简单的方法来做到这一点?我猜前向引用只支持类,不支持别名?

这是我正在尝试做的事情:

SelfReferenceType = Dict[str, Union[str, 'SelfReferenceType']]

class Foo(object):
def __init__(self):
self.data = {} # type: SelfReferenceType

# Functions that work on self.data

最佳答案

我认为您的示例是正确的并且适用于较新版本的 Python:

SelfReferenceType = Dict[str, Union[str, 'SelfReferenceType']]

我用 3.10.6 测试过,没有出现任何错误。这似乎已得到修复。

一般来说,使用带引号的字符串进行循环或“转发”引用是正确的方法,如 https://peps.python.org/pep-0484/#forward-references 中所述。和 this comment by Guido .具体而言,我无法以任何方式找到任何有关遵循此类型别名模式的信息,但我看不出有任何不同的原因。

如果不引用足够新的 mypy 版本( that include this PR ,并且可能启用了标志),这样的引用可能会起作用,这也是毫无值(value)的。

关于python - 类型自引用类型别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119945/

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