Python Union 可以递归包含自身吗?

问题描述 投票:0回答:1

是否可以创建一个类型,该类型是其中一项引用该类型的并集?

请参阅以下示例用例。这会失败,因为

Serialized
尚未声明。

from typing import List, Dict, Union 

class MyClass:
    # (...)

    Serialized = Union[Dict[str, Serialized], List[Serialized], str, int, float, bool]

    def serialize(self) -> Serialized:
        ...
python python-typing
1个回答
2
投票

根据定义类型提示的PEP 484,您可以使用他们所谓的前向引用来引用尚未定义的类型。

所以你可以这样做:

from typing import Union, Dict, List

class MyClass:
    # (...)

    Serialized = Union[Dict[str, 'Serialized'], List['Serialized'], str, int, float, bool]

    def serialize(self) -> Serialized:
        ...
© www.soinside.com 2019 - 2024. All rights reserved.