缺少python选项/enum库
optenum的Python项目详细描述
optenum
在这一点上,人们的关注度也会变得越来越高。在这一点上,人们的关注度也会越来越高。在这一点上,人们的关注度也会越来越高。在这一点上,人们的关注度也会越来越高,他们的关注度也会越来越高,他们的关注度也会越来越高,他们的关注度也会越来越高,他们的关注度也会越来越高。他们的关注度也会越来越高。他们的关注度也会越来越高。他们的关注度也会越来越高。他们的关注度也会越来越高,他们的关注度也会越来越高,他们的关注度也会越来越高,他们的关注度也会越来越高。6172个65"/ < < A >
缺少python选项/enum库,它支持枚举代码、名称、文本、偶数(代码、名称)元组列表等。
名称"opt enum"来自"option"+"枚举操作"。
与Python2.7+
和Python3.0+
兼容
安装
巨蟒3.x,2.7
pip install optenum
对于那些可能丢失的6
模块:
pip install six optenum
快速启动
简单的枚举类型
说我们定义了一个简单的枚举:
fromoptenumimportOptionsclassFruit(Options):APPLE=1ORANGE=2BANANA=3
在python命令行中尝试以下操作:
>>> from optenum import Option, Options >>> class Fruit(Options): ... APPLE = 1 ... ORANGE = 2 ... BANANA = 3 >>> >>> Fruit.APPLE <Option code=1 name=APPLE text=None> >>> print(Fruit.APPLE) 1 >>> Fruit.APPLE.code 1 >>> Fruit.APPLE.name 'APPLE' >>> Fruit.APPLE.text >>> print(Fruit.APPLE.text) None >>> Fruit.APPLE.get_text() 'apple'
复杂声明
您可以在许多注释中声明选项(枚举)。
fromoptenumimportOption,OptionsclassEnumCellPhone(Options):APPLE=1SAMSUNG=Option(2,name='SAMSUNG')HUAWEI=3,'Huawei cellphone'# tuple annotation. name = code, textclassDoorState(Options):OPEN='O','Door is opened'# tuple annotation. name = code, textCLOSED=('C','Door is closed')# tuple annotation, too.IN_OPENING='IO'IN_CLOSING='IC'_FLAG=False# underscore leading name is not an optionx=lambday:y# function/callable is not an option
运算符
选项
支持某些运算符。更多信息请参见operators.md>>> class Favorite(Options): ... APPLE = 1 ... BANANA = 3, 'Banana hot' ... >>> >>> Fruit.APPLE == Favorite.APPLE True >>> Fruit.BANANA == Favorite.BANANA False >>> Fruit.APPLE + 1 == Fruit.ORANGE True>>> Fruit.BANANA >> 2 0 >>> Fruit.BANANA << 2 12>>> Fruit.BANANA > Favorite.APPLE True
收藏
选项
提供一些用于访问选项及其字段的集合。 有关详细信息,请参阅下面的"选项集合"部分。>>> Fruit.codes [1, 2, 3] >>> Fruit.names ['ORANGE', 'APPLE', 'BANANA'] >>> Fruit.all [<Option code=2 name=ORANGE text=None>, <Option code=1 name=APPLE text=None>, <Option code=3 name=BANANA text=None>] >>> Fruit.tuples [('ORANGE', 2, None), ('APPLE', 1, None), ('BANANA', 3, None)] >>> Favorite.items {'APPLE': <Option code=1 name=APPLE text=None>, 'BANANA': <Option code=3 name=BANANA text=Banana hot>} >>> Favorite.get_list('code','text') [(1, None), (3, 'Banana hot')] >>> Favorite.get_dict('name','text') {'APPLE': None, 'BANANA': 'Banana hot'}
Django型号选择
To be written
背景
通常我们需要定义一些枚举或选项。但看起来python缺少这个类。 有时我们使用类、元组或dict作为替换。但它们并不方便。
例如,我们可以将类定义为枚举。我们可以使用myoption.foo
获取枚举值1
classMyOption(object):foo=1bar=2
但是我们怎么才能得到枚举名foo呢?我们怎样才能得到所有枚举的列表?元组的偶数列表[(1,'foo'),(2,'bar')]
(在django模型中有用)
尽管python 3.7附带了数据类。到目前为止,它对我来说就像一块语法糖,无法解决这些问题。
功能
- 代码-按不同类型列出的枚举/选项-例如0、1、-1(或"new"、"running"、"stopped")
- name-枚举/选项的名称-例如. '新的,运行的,停止的。支持点访问。
- 文本-枚举/选项的含义或说明。支持I18N—例如"新建"、"运行"、"停止"(翻译为"新建"、"中科"、"中科")
- list-检索代码、名称或文本的列表
[0,1,-1]
- dict-检索映射的dict。如果需要,甚至可以映射。
- 元组列表-检索
[(code,name),…]
元组的列表。适用于django型号。 - 运营商支持-例如
fruit.apple==1
,fruit.banana>;fruit.apple
- 分组-将一组枚举/选项分组。例如,in_progress_state=['starting','stopping'],但是'started'和'stopped'不属于它。
- 通过代码访问名称,文本
- 按名称查找枚举/选项,代码
指南/导师
选项的类型转换
pip install optenum
0
将动态构造一个选项
实例。optenum将构造一个新的子类型
选项(?)
根据选项值(code
)初始化新实例对象。
例如,选项(code=1,name='apple',text='an apple')
将构造一个类选项(int)
。
int
是您的代码类型。如果您的选项是字符串,例如选项('a','admin','administration user')
,
一个选项(str)
类将在内部构造。
内部选项(?)
类派生自选项和?
(例如int
)。也就是说你可以用
isinstance
检查对象。例如,假设我们有apple=option(1,'apple','an apple')
。然后
isinstance(apple,int)
为真。而且isinstance(apple,option)
也是true
。所以你可以用
您的选项作为它的值(code
)在dict
中作为键等。
pip install optenum
1
布尔值用于选项
pip install optenum
2
组和标记
参见本文档
选项的运算符
从v1.1.1开始,选项
的行为与其值(代码
)相同。因此它将支持其代码支持的所有运算符。
pip install optenum
3
选项的集合
选项可以作为订阅批注直接访问。例如选项['foo']
等于option.foo
我们还可以从选项类中访问以下集合。
选项。代码
-代码列表
选项.名称
-名称列表
选项。全部
-选项列表
选项.元组
-元组列表(名称
,代码
,文本
)
选项。项
-指定{名称
:选项
}映射
选项。获取列表(*字段)
-文件元组列表。*字段是选项字段的名称
例如代码
,*(名称
,代码
)或*(代码
,名称
,文本
)
选项。获取映射。
键字段
指定哪个选项字段是键,例如名称
,代码
。
字段
指定值元组,这些值元组组合了哪些选项字段,如(名称
,文本
)或名称
。
如果字段是tuple,则值为tuple。如果字段是单字段,则值为单字段。
自v1以来已弃用1
in
操作员可以检查选项中是否有代码。例如,如果水果中含有水果,则为苹果
。
选项.name
将不起作用。例如,如果水果中的"苹果"
将得到假
。
如果要在选项中检查name,请改用collection。
例如,如果"apple"在水果中。名称
配置
一些标志可用于对您的选项进行一些简单的配置。
\u ignore\u invalid\u name\uu
-ignore invalid选项
名称,以便您可以将自己的属性/函数添加到类中。
下划线前导属性和任何函数都将被忽略,以便您可以添加自己的属性和
功能。以下示例是有效的定义。
pip install optenum
4
但如果属性不是大写的(所有字符),它将被视为无效的选项并导致异常。
pip install optenum
5
如果您希望此选项可用,请将"忽略无效名称"添加到您的类中,如下所示。异常将被忽略。
但值得注意的是,它仍然不是一个选项
pip install optenum
6
按顺序
pip install optenum
7
< H1> FAQ - 为什么不使用namedtuple?
namedtuple也是定义枚举/选项的好方法。但它没有足够的功能
您可能需要诸如集合、运算符、比较、文本等等。
- 为什么选项名只允许大写?
因为如果将"忽略无效名称"设置为"真",则可以定义其他"无"选项属性。
枚举通常用大写标识符定义。
贡献者
投稿人名单:
- Samuel Chen-项目所有者和维护者。
推荐PyPI第三方库
pip install optenum0
将动态构造一个选项
实例。optenum将构造一个新的子类型
选项(?)
根据选项值(code
)初始化新实例对象。
例如,选项(code=1,name='apple',text='an apple')
将构造一个类选项(int)
。
int
是您的代码类型。如果您的选项是字符串,例如
选项('a','admin','administration user')
,
一个选项(str)
类将在内部构造。
内部选项(?)
类派生自选项和
?
(例如int
)。也就是说你可以用
isinstance
检查对象。例如,假设我们有apple=option(1,'apple','an apple')
。然后
isinstance(apple,int)
为真。而且
isinstance(apple,option)
也是true
。所以你可以用
您的选项作为它的值(code
)在dict
中作为键等。
pip install optenum1
布尔值用于选项
pip install optenum2
组和标记
参见本文档
选项的运算符
从v1.1.1开始,选项
的行为与其值(代码
)相同。因此它将支持其代码
支持的所有运算符。
pip install optenum3
选项的集合
选项可以作为订阅批注直接访问。例如选项['foo']
等于option.foo
我们还可以从选项类中访问以下集合。
选项。代码
-代码列表
选项.名称
-名称列表
选项。全部
-选项列表
选项.元组
-元组列表(名称
,代码
,文本
)
选项。项
-指定{名称
:选项
}映射
选项。获取列表(*字段)
-文件元组列表。*字段是选项字段的名称
例如代码
,*(名称
,代码
)或*(代码
,名称
,文本
)
选项。获取映射。
键字段
指定哪个选项字段是键,例如名称
,代码
。
字段
指定值元组,这些值元组组合了哪些选项字段,如(名称
,文本
)或名称
。
如果字段是tuple,则值为tuple。如果字段是单字段,则值为单字段。
自v1以来已弃用1
in
操作员可以检查选项中是否有代码。例如,如果水果中含有水果,则为苹果
。
选项.name
将不起作用。例如,如果水果中的"苹果"
将得到假
。
如果要在选项中检查name,请改用collection。
例如,如果"apple"在水果中。名称
配置
一些标志可用于对您的选项进行一些简单的配置。
\u ignore\u invalid\u name\uu
-ignore invalid选项
名称,以便您可以将自己的属性/函数添加到类中。
下划线前导属性和任何函数都将被忽略,以便您可以添加自己的属性和
功能。以下示例是有效的定义。
pip install optenum
4
但如果属性不是大写的(所有字符),它将被视为无效的选项并导致异常。
pip install optenum
5
如果您希望此选项可用,请将"忽略无效名称"添加到您的类中,如下所示。异常将被忽略。
但值得注意的是,它仍然不是一个选项
pip install optenum
6
按顺序
pip install optenum
7
< H1> FAQ - 为什么不使用namedtuple?
namedtuple也是定义枚举/选项的好方法。但它没有足够的功能
您可能需要诸如集合、运算符、比较、文本等等。
- 为什么选项名只允许大写?
因为如果将"忽略无效名称"设置为"真",则可以定义其他"无"选项属性。
枚举通常用大写标识符定义。
贡献者
投稿人名单:
- Samuel Chen-项目所有者和维护者。
推荐PyPI第三方库
选项可以作为订阅批注直接访问。例如选项['foo']
等于option.foo
我们还可以从选项类中访问以下集合。
选项。代码
-代码列表选项.名称
-名称列表选项。全部
-选项列表选项.元组
-元组列表(名称
,代码
,文本
)选项。项
-指定{名称
:选项
}映射选项。获取列表(*字段)
-文件元组列表。*字段是选项字段的名称 例如代码
,*(名称
,代码
)或*(代码
,名称
,文本
)选项。获取映射。
键字段
指定哪个选项字段是键,例如名称
,代码
。字段
指定值元组,这些值元组组合了哪些选项字段,如(名称
,文本
)或名称
。 如果字段是tuple,则值为tuple。如果字段是单字段,则值为单字段。自v1以来已弃用1
in
操作员可以检查选项中是否有
代码。例如,如果水果中含有水果,则为
苹果
。选项.name
将不起作用。例如,如果水果中的"苹果"
将得到假
。 如果要在选项中检查name,请改用collection。 例如,
如果"apple"在水果中。名称
配置
一些标志可用于对您的选项进行一些简单的配置。
\u ignore\u invalid\u name\uu
-ignore invalid选项
名称,以便您可以将自己的属性/函数添加到类中。下划线前导属性和任何函数都将被忽略,以便您可以添加自己的属性和 功能。以下示例是有效的定义。
pip install optenum
4但如果属性不是大写的(所有字符),它将被视为无效的
选项并导致异常。
pip install optenum
5如果您希望此选项可用,请将"忽略无效名称"添加到您的类中,如下所示。异常将被忽略。 但值得注意的是,它仍然不是一个
选项
pip install optenum
6按顺序
pip install optenum
7
- 为什么不使用namedtuple?
namedtuple也是定义枚举/选项的好方法。但它没有足够的功能 您可能需要诸如集合、运算符、比较、文本等等。
- 为什么选项名只允许大写?
因为如果将"忽略无效名称"设置为"真",则可以定义其他"无"选项属性。 枚举通常用大写标识符定义。
贡献者
投稿人名单:
- Samuel Chen-项目所有者和维护者。