Support unknown values in Python Enums 在Python Enums中支持未知值

14 浏览
0 Comments

Support unknown values in Python Enums 在Python Enums中支持未知值

我希望扩展Python枚举以支持未定义的值。

我的使用情况是:我想从枚举中获益(例如,能够使用可读的名称引用/比较已知条目),但我也希望它支持未知值。如果值后面没有名称,则str应该简单地打印值的str表示,比较应该失败。

让我给您一个简短的示例,说明我想要的是什么:

from enum import Enum
class Foo(Enum):
    A = 1
    B = 2
    C = 3
    def __str__(self):
        return self.name
print(Foo(1)) # 打印 'A'
print(Foo(2)) # 打印 'B'
print(Foo(3)) # 打印 'C'
print(Foo(1) == Foo.A) # 打印 'true'
print(Foo(4)) # 我期望输出 '4'
print(Foo(123)) # 我期望输出 '123'
print(Foo(123) == Foo.A) # 我期望输出 False

当然,最后几行会失败。

是否有一种方法可以扩展枚举,或者也许还有其他简单的Pythonic方式?(请不要使用第三方库。)

0