类型自引用类型别名



我想有一个引用自己的类型:

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测试,没有得到任何错误。这个问题似乎已经解决了。

对于循环或"forward"参考文献是正确的方法,如https://peps.python.org/pep-0484/#forward-references和Guido的评论所述。具体来说,我找不到任何关于类型别名遵循这种模式的信息,但我看不出有什么理由会有不同。

如果没有足够新版本的mypy(包括此PR,并且可能启用了标志),这样的引用也可能不起作用。

相关内容

  • 没有找到相关文章

最新更新