如何在 Python 中创建类似 Haskell 的和类型? 枚举联合

问题描述

如果我在 Haskell 中有一些简单的 sum 类型,比如

data Owner = Me | You

如何用 Python 方便地表达它?

解决方法

Enum 或 Union 最接近 Python 中的 tagged unionsum type

枚举

from enum import Enum

class Owner(Enum):
     Me = 1
     You = 2

联合

https://docs.python.org/3/library/typing.html#typing.Union

import typing

class Me:
    pass
class You:
    pass

owner: typing.Union[Me,You] = Me