我已经研究了这个并找到了类似的答案,但它们在这种情况下不起作用,因为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)