跳转到主要内容

一个小型库,用于向枚举添加总排序

项目描述

ordered_enum

CI Downloads

ordered_enum 是一个小型库,用于向 enum.Enum 添加(总)排序。

它提供两种排序行为

  • ordered_enum.OrderedEnum:定义总排序
  • ordered_enum.ValueOrderedEnum:“总”排序基于成员值

安装

ordered_enum 需要 Python 3.7 或更高版本。

pip3 install ordered_enum

用法

要使用 ordered_enum,只需将 OrderedEnumValueOrderedEnum 作为您的父类

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 提供了基于枚举值在类中定义的顺序的排序。这意味着

  1. 枚举值不必唯一,ordered_enum 也能工作
  2. 枚举值可以是异构类型
  3. 移动枚举值会改变它们的排序

因此,您应该要么不依赖于特定的排序,要么 确保您的定义顺序是您想要的顺序。

项目详情


下载文件

下载适用于您平台的应用程序文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源代码分发

ordered_enum-0.0.9.tar.gz (2.8 kB 查看哈希值)

上传时间 源代码

构建分发

ordered_enum-0.0.9-py3-none-any.whl (3.5 kB 查看哈希值)

上传时间 Python 3

由以下提供支持