一个小型库,用于向枚举添加总排序
项目描述
ordered_enum
ordered_enum 是一个小型库,用于向 enum.Enum
添加(总)排序。
它提供两种排序行为
ordered_enum.OrderedEnum
:定义总排序ordered_enum.ValueOrderedEnum
:“总”排序基于成员值
安装
ordered_enum 需要 Python 3.7 或更高版本。
pip3 install ordered_enum
用法
要使用 ordered_enum,只需将 OrderedEnum
或 ValueOrderedEnum
作为您的父类
from ordered_enum import OrderedEnum
class State(OrderedEnum):
Disabled = 4
Loaded = 3
Waiting = 2
Running = 1
Dead = 0
assert(State.Disabled < State.Loaded)
assert(sorted([State.Dead, State.Waiting]) == [State.Waiting, State.Dead])
OrderedEnum
不需要 @enum.unique
(或完全不需要唯一值);它使用定义的顺序来对成员施加排序。
如果您想根据成员值施加排序,则可以使用 ValueOrderedEnum
代替
import enum
from ordered_enum import ValueOrderedEnum
@enum.unique
class State(ValueOrderedEnum):
Disabled = 4
Loaded = 3
Waiting = 2
Running = 1
Dead = 0
assert(State.Disabled > State.Loaded)
assert(sorted([State.Waiting, State.Dead]) == [State.Dead, State.Waiting])
ValueOrderedEnum
确实 需要唯一值,这可以通过 @enum.unique
来强制执行。如果未能使 ValueOrderedEnum
的值唯一,则会导致排序静默损坏。
注意事项
如上所述,ordered_enum.OrderedEnum
提供了基于枚举值在类中定义的顺序的排序。这意味着
- 枚举值不必唯一,ordered_enum 也能工作
- 枚举值可以是异构类型
- 移动枚举值会改变它们的排序
因此,您应该要么不依赖于特定的排序,要么 确保您的定义顺序是您想要的顺序。
项目详情
下载文件
下载适用于您平台的应用程序文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。
源代码分发
ordered_enum-0.0.9.tar.gz (2.8 kB 查看哈希值)
构建分发
ordered_enum-0.0.9-py3-none-any.whl (3.5 kB 查看哈希值)
关闭
ordered_enum-0.0.9.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a821dbbe2f998a1ef4c5974c8cd8bdb62e0ddb20ddcd0851b091538c7f944ba0 |
|
MD5 | fcc58081ff7eeb394665428677254c6e |
|
BLAKE2b-256 | f7dc015b5bea68cd4523f62c0f998671b3f0155846ee230013a8423362082e8c |
关闭
ordered_enum-0.0.9-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9382e88309b56dcbe06be43c4a586984d036b630863b53dbec5039655bab3e83 |
|
MD5 | c6c98ac00975fa27ef1e1b2c35dfe58b |
|
BLAKE2b-256 | 0a975a6be7642caa2fb497dd509693a7be9bc9cf089a4b1eab09a8d6ea00ff76 |