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
、NOTA.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