Python 如何列出数组并使它们成为枚举
Python how to list an array and make them an Enum
所以我正在努力实现这样的目标
from enum import Enum
tabulate_formats = ['fancy_grid', 'fancy_outline', 'github', 'grid']
class TableFormat(str, Enum):
for item in tabulate_formats:
exec(f"{item} = '{item}'")
虽然我得到这个错误
Traceback (most recent call last):
File "/app/src/main.py", line 25, in <module>
class TableFormat(str, Enum):
File "/app/src/main.py", line 26, in TableFormat
for item in tabulate_formats:
File "/usr/local/lib/python3.6/enum.py", line 92, in __setitem__
raise TypeError('Attempted to reuse key: %r' % key)
TypeError: Attempted to reuse key: 'item'
如何正确地将它们分配到 class
class StrEnum(str, Enum):
@staticmethod
def _generate_next_value_(name, *args):
return name
TableFormat = StrEnum('TableFormat', tabulate_formats)
和
>>> list(TableFormat)
[<TableFormat.fancy_grid: 'fancy_grid'>, <TableFormat.fancy_outline: 'fancy_outline'>, <TableFormat.github: 'github'>, <TableFormat.grid: 'grid'>]
不确定这是否也可以接受,但基于 ,您可以这样做:
TableFormat = Enum('TableFormat', {i:i for i in tabulate_formats})
所以我正在努力实现这样的目标
from enum import Enum
tabulate_formats = ['fancy_grid', 'fancy_outline', 'github', 'grid']
class TableFormat(str, Enum):
for item in tabulate_formats:
exec(f"{item} = '{item}'")
虽然我得到这个错误
Traceback (most recent call last):
File "/app/src/main.py", line 25, in <module>
class TableFormat(str, Enum):
File "/app/src/main.py", line 26, in TableFormat
for item in tabulate_formats:
File "/usr/local/lib/python3.6/enum.py", line 92, in __setitem__
raise TypeError('Attempted to reuse key: %r' % key)
TypeError: Attempted to reuse key: 'item'
如何正确地将它们分配到 class
class StrEnum(str, Enum):
@staticmethod
def _generate_next_value_(name, *args):
return name
TableFormat = StrEnum('TableFormat', tabulate_formats)
和
>>> list(TableFormat)
[<TableFormat.fancy_grid: 'fancy_grid'>, <TableFormat.fancy_outline: 'fancy_outline'>, <TableFormat.github: 'github'>, <TableFormat.grid: 'grid'>]
不确定这是否也可以接受,但基于
TableFormat = Enum('TableFormat', {i:i for i in tabulate_formats})