枚举中有大量常量

bla*_*azs 4 python enums python-3.x

我有一个可用的坐标参考系统列表,我希望将其表示为枚举,如下所示:

import enum


class CRS(enum.Enum):
    WGS84 = '4326'
    POP_WEB = '3857'
    UTM_33N = '3767'
    # etc. etc.
Run Code Online (Sandbox Code Playgroud)

当我们只支持几个坐标系统时,这工作得很好,但是现在我们已经决定支持大约60个其他坐标系统,这个列表会变得很大.

是否可以手动输入列表?

Pav*_*vel 6

您可以从CSV文件或其他任何内容中读取键/值,将它们存储为dict并按如下方式初始化枚举:

>>> d = {"WGS84" : "4326", "POP_WEB" : "3857", "UTM_33N" : "3767" }
>>> e = enum.Enum("CRS", d.items())
Run Code Online (Sandbox Code Playgroud)

现在您可以像往常一样访问枚举值:

>>> e.POP_WEB
<CRS.POP_WEB: '3857'>
>>> e.WGS84
<CRS.WGS84: '4326'>
Run Code Online (Sandbox Code Playgroud)