小编W. *_*eed的帖子

如何将枚举名称作为值与其他信息一起使用

我已经研究了这个并找到了类似的答案,但它们在这种情况下不起作用,因为auto()它比__new__被调用的更早解决,并且仅在整个值得到解决时才解决_auto_null.

基本上,我想要的是以下内容:

class MyEnum(str, Enum):
    one = '1 data'
    two = '2 data'

    def __new__(cls, data):
        member = str.__new__(cls, <NEED NAME HERE>)
        member.data = data
        member._value_ = <NEED NAME HERE>

assert MyEnum.one == 'one'
assert MyEnum.one.value == 'one'
assert MyEnum.one.data == '1 data'
Run Code Online (Sandbox Code Playgroud)

但是,名称没有传递给__new__所以没有什么可以填写的<NEED NAME HERE>.

然后,我尝试以auto()下列方式使用:

class MyEnumBase(Enum):
    def _generate_next_value_(name, start, count, last_values):
        return name

class MyEnum(str, MyEnumBase):
    one = '1 data'
    two = '2 data'

    def …
Run Code Online (Sandbox Code Playgroud)

python enums python-3.6

3
推荐指数
1
解决办法
102
查看次数

标签 统计

enums ×1

python ×1

python-3.6 ×1