Python 从枚举具有重复值的函数返回枚举

Python 从枚举具有重复值的函数返回枚举,python,enums,Python,Enums,我有一个枚举来表示函数的不同可能值 class A(Enum): NOT_FOUND = NONE INAQUATE = NONE POSITIVE = 1 # Some more 但是,从函数返回此枚举时 def search_function(target = 1): if target == 1: return A.INAQUATE else: return A.POSITIVE 返回A.NOT_FOUND

我有一个枚举来表示函数的不同可能值

class A(Enum):
    NOT_FOUND = NONE
    INAQUATE = NONE
    POSITIVE = 1
    # Some more
但是,从函数返回此枚举时

def search_function(target = 1):
    if target == 1:
        return A.INAQUATE
    else:
        return A.POSITIVE
返回
A.NOT_FOUND
、NOT
A.INAQUATE
,这会将程序分解为一行

Python 3.7.6

>>> from enum import Enum
>>> class A(Enum):
...     NOT_FOUND = None
...     INAQUATE = None
...     POSITIVE = 1
... 
>>> def search_function(target = 1):
...     if target == 1:
...             return A.INAQUATE
...     return A.NOT_FOUND
... 
>>> search_function()
<A.NOT_FOUND: None>
>>从枚举导入枚举
>>>A类(枚举):
...     未找到=无
...     不充足=无
...     正=1
... 
>>>def搜索_功能(目标=1):
...     如果目标==1:
...             返回不适当的
...     返回A.NOT_FOUND
... 
>>>搜索函数()

是否有方法正确返回
a.INAQUATE

Enum
s具有重复的值时,成员是完全相同的对象--仅由
Enum
本身中的两个名称引用:

>>> list(A)
[<A.NOT_FOUND: None>, <A.POSITIVE: 1>]

>>> A.INAQUATE is A.NOT_FOUND
True
在使用中:

>>> list(A)
[<A.INAQUATE: None>, <A.NOT_FOUND: None>, <A.POSITIVE: 1>]

>>> A.INAQUATE is A.NOT_FOUND
False


1披露:我是《圣经》、《圣经》和《图书馆》的作者。

这是否回答了你的问题?不幸的是,它似乎是无关的,因为我只关心返回值。我已经重写了比较运算符,目前唯一的问题是这个函数的返回值错误。这很有趣。标准enum之所以以这种方式实现,有什么特别的原因吗?因为
enum
意味着给一个值起一个名字——如果给同一个值分配了多个成员,那么一些有用性就会丧失。哦,我忘了提到:
NoAlias
枚举可以通过值来查找--
A(1)
引发一个
TypeError
>>> list(A)
[<A.INAQUATE: None>, <A.NOT_FOUND: None>, <A.POSITIVE: 1>]

>>> A.INAQUATE is A.NOT_FOUND
False
>>> A(1)
Traceback (most recent call last):
  ...
TypeError: NoAlias enumerations cannot be looked up by value