可验证的更好,经过验证的Enum
项目描述
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 查看哈希值)
关闭
venum-1.1.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2c4b0b096dda418489861aed20c4188f5a472f2e2037a6836fdddf4c0d98ba82 |
|
MD5 | 112a80e6c1584c4b7e98e849665d9275 |
|
BLAKE2b-256 | 9644a846eac63a4cde832e6c94d3c89d04bcee56c88e6d2168324ada957bf717 |