小编Dav*_*vid的帖子

在 Python 类型中表达枚举及其成员之间的关系

如何输入(在 Python 中,例如 MyPy)一个需要两个参数的函数 - 枚举及其值/成员之一?

from enum import Enum
from typing import TypeVar, Type

class MyEnumA(Enum):
   A = 1
   B = 2

class MyEnumB(Enum):
   A = 1
   B = 2

TE = TypeVar('TE', bound=Enum)
def myfunction(member: TE, e: Type[TE]) -> None:
    pass

myfunction(MyEnumA.A, MyEnumA) # all right
myfunction(MyEnumA.A, MyEnumB) # I expect mypy-error here but it passed

print(type(MyEnumA.A)) # says: <enum 'MyEnumA'>
print(type(MyEnumB.A)) # says: <enum 'MyEnumB'>

print(f'{isinstance(MyEnumA.A, MyEnumA)=}') # says: isinstance(MyEnumA.A, MyEnumA)=True
print(f'{isinstance(MyEnumA.A, MyEnumB)=}') # says: isinstance(MyEnumA.A, MyEnumB)=False …
Run Code Online (Sandbox Code Playgroud)

python enums mypy python-typing

8
推荐指数
1
解决办法
255
查看次数

标签 统计

enums ×1

mypy ×1

python ×1

python-typing ×1