跳转到主要内容

可验证的更好,经过验证的Enum

项目描述

https://img.shields.io/pypi/v/venum.svg?style=flat-square https://img.shields.io/travis/ofek/venum.svg?branch=master&style=flat-square https://img.shields.io/codecov/c/github/ofek/venum.svg?style=flat-square https://img.shields.io/pypi/pyversions/venum.svg?style=flat-square https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square

venum提供了一个枚举,实际上就是一个namedtuple,但创建起来更简单。这意味着枚举不需要在程序执行前定义(类似于函数式API),成员确实是不可变的(无法动态添加新的)。此外,这比stdlib的Enum节省了一些内存。

使用方法

>>> from venum import Enum
>>>
>>> ContentTypes = Enum(
...     ('JSON', 'application/json; charset=utf-8'),
...     ('HTML', 'text/html; charset=utf-8'),
...     ('JS', 'text/javascript; charset=utf-8'),
...     ('XML', 'application/xml'),
...     ('TEXT', 'text/plain; charset=utf-8'),
...     ('JPEG', 'image/jpeg'),
...     ('PNG', 'image/png'),
...     ('YAML', 'application/x-yaml'),
...     name='ContentTypes'
... )
>>> ContentTypes
ContentTypes(JSON='application/json; charset=UTF-8', HTML='text/html; charset=utf-8', JS='text/javascript; charset=utf-8', XML='application/xml', TEXT='text/plain; charset=utf-8', JPEG='image/jpeg', PNG='image/png', YAML='application/x-yaml')

属性查找

不需要.value

>>> from venum import Enum
>>>
>>> sample = Enum(('BLUE', 1), ('RED', 2))
>>> sample
Enum(BLUE=1, RED=2)
>>> sample.BLUE
1

按值比较

>>> from venum import Enum
>>>
>>> sample = Enum(('SPADES', 1))
>>> sample.SPADES == 1
True

内存效率

这个示例在一个64位机器上运行。

请注意,stdlib的Enum本身使用1056字节,每个成员需要56字节,而namedtuple Enum使用888字节,每个成员只需要16字节。

>>> from sys import getsizeof
>>> from enum import Enum as StdEnum
>>> from venum import Enum
>>>
>>> class SomeEnum(StdEnum):
...     BLUE = 3
>>>
>>> getsizeof(SomeEnum.__class__)
1056
>>> getsizeof(Enum(('BLUE', 3)).__class__)
888

安装

venum作为通用wheel在PyPI上分发,可在Linux/macOS和Windows上使用,并支持Python 2.7/3.3+和PyPy。

$ pip install venum

结语

这就是全部内容,但如果你想知道更多以字母V开头的单词,这里有一段来自V for Vendetta中V的独白。

“Voilà! 在此,一位谦逊的滑稽剧老将,被命运的变幻无常地扮演成受害者与恶棍。这张面孔,不仅仅是虚荣的伪装,而是民意的遗迹,现在已经空荡无存。然而,这位过去烦恼的勇敢访问,仍然充满活力,并发誓要打败这些贪婪、恶毒的害虫,它们捍卫着邪恶,并允许对意志的残酷、贪婪的侵犯。

唯一的判决是复仇;一场复仇,作为献祭持有,不是徒劳的,因为这样的价值和真实性终将证明警惕的人和有德的人。

确实,这种词汇的杂烩非常冗长,所以让我简单地补充一下,能见到您我非常荣幸,您可以叫我V。”

——V

项目详情


下载文件

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

源代码分发

此版本没有提供源代码分发文件。请参阅生成分发存档的教程

构建分发

venum-1.1.0-py2.py3-none-any.whl (6.7 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持