如何将嵌套 Python 枚举的成员导出到包含类中?

问题描述 投票:0回答:1

我有一个包含

state
字段的 Python 类。为了定义所有可能的状态,我声明了一个嵌套枚举:

class Foo:
    class State(enum.Enum):
        Unloaded = enum.auto()
        Loaded = enum.auto()
        Processed = enum.auto()

    state: State

不过这样写代码有点麻烦:

if foo.state == Foo.State.Unloaded:
    do_something_with(foo)
    foo.state = Foo.State.Loaded

我想让枚举成员作为

Foo
的成员直接访问(如
Foo.Unloaded
Foo.Loaded
Foo.Processed
)。有没有比手动分配更好的方法?

class Foo:
    class State(enum.Enum):
        Unloaded = enum.auto()
        Loaded = enum.auto()
        Processed = enum.auto()

    Unloaded = State.Unloaded
    Loaded = State.Loaded
    Processed = State.Processed

    state: State
python enums class-variables
1个回答
0
投票

当然,你总是可以动态地做这样的事情。但为什么还要嵌套枚举呢?

import enum

class Foo:
    pass

class State(enum.Enum):
    Unloaded = enum.auto()
    Loaded = enum.auto()
    Processed = enum.auto()


for member in State:
    setattr(Foo, e.name, e)

注意,一般来说,嵌套类定义在 Python 中并不常见。即使我想要像你原来的方法(我碰巧认为要求

Foo.state.whatever
不是combursom而是good),那么你就会这样做:

导入枚举

类状态(枚举.Enum): 已卸载= enum.auto() 已加载= enum.auto() 已处理 = enum.auto()

Foo 类: 状态=状态

© www.soinside.com 2019 - 2024. All rights reserved.