我有一个包含
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
当然,你总是可以动态地做这样的事情。但为什么还要嵌套枚举呢?
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 类: 状态=状态