【Python3(八) 枚举详解】教程文章相关的互联网学习教程文章

Python-比较时默认获取枚举值【代码】

我创建了一个Enum类,如下所示:class MsgType(Enum):# ADMINISTRATIVE MESSAGEHEARTBEAT = "0"LOGON = "A"LOGOUT = "5"REJECT_SESSION_LEVEL = "3"RESEND_REQUEST = "2"SEQUENCE_RESET = "4"SESSION_REJECT = "3"TEST_REQUEST = "1"我想使用此类与阅读消息后得到的字符串进行比较.我正在比较显示的值. msg_type中的值是str类型的a.def read_admin_msg(message):msg_type = read_header(message)if msg_type == ct.MsgType.HEARTBEA...

列出使用Python SUDS进行SOAP枚举的所有可能值【代码】

我正在将SUDS客户端连接到SOAP服务器,其wsdl包含许多枚举,如下所示:</simpleType><simpleType name="FOOENUMERATION"><restriction base="xsd:string"><enumeration value="ALPHA"><!-- enum const = 0 --><enumeration value="BETA"/><!-- enum const = 1 --><enumeration value="GAMMA"/><!-- enum const = 2 --><enumeration value="DELTA"/><!-- enum const = 3 --></restriction> </simpleType>在我的客户中,我正在接收包含这...

Python枚举组合【代码】

我想基于两个现有的类创建一个新的Enum(IntEnum)类.有一个可行的解决方案,如下所示:from enum import unique, IntEnum from itertools import chain from collections import OrderedDict@unique class FirstEnumClass(IntEnum):a = 1b = 2@unique class SecondEnumClass(IntEnum):c = 3d = 4# here a combined class is created: CombinedEnumClass = unique(IntEnum('CombinedEnumClass', OrderedDict([(i.name, i.value) for i...

任何python模块都可以支持枚举2个列表并执行“交叉乘法”吗?【代码】

在日常工作中,我经常在摘要下方写下这些内容,res = [] a = ["A","B","C","D"] b = [1,2,3,4] for _a in a:for _b in b:res.append((_a,_b)) # or be more simple #[(_a,_b) for _a in a for _b in b][('A', 1),('A', 2),('A', 3),('A', 4),('B', 1),('B', 2),('B', 3),('B', 4),('C', 1),('C', 2),('C', 3),('C', 4),('D', 1),('D', 2),('D', 3),('D', 4)]我可否知道 >在计算机领域是否有用于此类操作的特殊术语?>如果有办法,例如...

我应该如何最好地模拟和/或避免在Python中使用枚举?【代码】

这个问题已经在这里有了答案: > How can I represent an ‘Enum’ in Python? 43个我一直在使用一个小类在某些Python项目中模拟Enums.有没有更好的方法,或者在某些情况下这最有意义? 此处的类代码:class Enum(object): '''Simple Enum Class Example Usage: >>> codes = Enum('FOO BAR BAZ') # codes.BAZ will be 2 and so on ...''' def __init__(self, names):for ...

python – 在ctypes.Structure中使用枚举【代码】

我有一个我通过ctypes访问的结构:struct attrl {char *name;char *resource;char *value;struct attrl *next;enum batch_op op; };到目前为止,我有Python代码,如:# struct attropl class attropl(Structure):pass attrl._fields_ = [("next", POINTER(attropl)),("name", c_char_p),("resource", c_char_p),("value", c_char_p),但我不确定如何使用batch_op枚举.我应该将它映射到c_int还是?解决方法:至少对于GCC而言,枚举...

python – enum – 在字符串转换中获取枚举值【代码】

我有以下enum定义from enum import Enumclass D(Enum):x = 1y = 2print(D.x)现在印刷的价值是D.x相反,我希望枚举的价值是印刷品1可以做什么来实现这个功能?解决方法:您正在打印枚举对象.如果您只想打印它,请使用.value属性:print(D.x.value)见Programmatic access to enumeration members and their attributes section:If you have an enum member and need its name or value: 06001如果您只想提供自定义字符串表示形式,则可以...

python中的枚举类和元类【代码】

当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份: JAN = 1 FEB = 2 MAR = 3 ... NOV = 11 DEC = 12好处是简单,缺点是类型是int,并且仍然是变量。 更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能: from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov...

在python中排序枚举值【代码】

我希望能够安排Enum的订购.有人建议如何解决这个问题? 以下Enum元类正在使用:class EnumMeta(type):def __new__(typ, name, bases, attrs):cls_attrs = {}cls_choices = []for attr_name, value in attrs.items():cls_attrs[attr_name] = attr_name.lower()if not attr_name.startswith("__"):cls_choices.append((attr_name.lower(), value))def choices(cls):return cls_choicesdef values(cls, value=None):if value is None:...

一种更加pythonic的方式来定义具有动态成员的枚举【代码】

我需要创建一个枚举来表示ISO国家/地区代码.国家/地区代码数据来自json文件,可从以下位置获取:https://github.com/lukes/ISO-3166-Countries-with-Regional-Codes 所以我做的是:data = json.load(open('slim-2.json')) codes_list = [(data[i]['alpha-2'], int(data[i]['country-code']))for i in range(len(data))]CountryCode = enum.Enum('CountryCode', codes_list,)names_dict = {int(data[i]['country-code']):data[i]['na...

python – 如何为枚举对象实现增量函数?【代码】

参见英文答案 > Moving from one enum state to the next and cycling through 3个我正在使用Dyson风扇,我正在尝试编写一个可以提高风扇速度的功能.枚举对象FanSpeed具有以下成员.当我在FanSpeed中执行[print(i)for i]时,我得到:FanSpeed.FAN_SPEED_1 FanSpeed.FAN_SPEED_2 FanSpeed.FAN_SPEED_3 FanSpeed.FAN_SPEED_4 FanSpeed.FAN_SPEED_5 FanSpeed.FAN_SPEED_6 FanSpeed.FAN_SPEED_7 FanSp...

Python3 – 将枚举转换为不同的数据类型【代码】

我目前正在使用以下类型的枚举:class System(Enum):FIRST = 1SECOND = 2现在我希望能够做到以下几点:a = System.FIRST url = a.getSystemURL()枚举成员FIRST和SECOND的URL当然不同. 我可以创建一个字典,枚举成员作为键,url作为值,但这不能保证如果我以后添加枚举成员,我会记得添加相应的字典条目. 是否有一种干净的方法来为枚举成员创建具有多个值的枚举?并列举这些不同的价值观? 像这样的东西:class System(Enum):Values = (...

如何在python2中获得反向枚举?【代码】

我有一个这样的结构列表:[(key1, val1), (key2, val2), ...]我想迭代它获取关键和每一步的项目索引.以相反的顺序. 现在我这样做:for index, key in reversed(list(enumerate(map(lambda x: x[0], data)))):print index, key它运作得很好,但我只是担心它是否是一种正确的方法.可以有更好的解决方案吗?解决方法:enumerate()不能倒数,只能倒数.请改用itertools.count() object:from itertools import izip, countfor index, item ...

python – 为什么在枚举中找不到以下属性?【代码】

我使用的是Python 2.7.5,我安装了Enum as 点击安装枚举 我已经写出以下代码来测试Enum.from enum import Enum class Color(Enum):red = 'Hello'blue = 'Trello'green = 'Yello'for name, attr in Color.__members__.items():print(attr.value)这引起了我的错误说法. AttributeError:类型对象’Color’没有属性’__members__’. 为什么python无法获得__members__?解决方法:你把enum和enum混淆了.他们有许多相似之处,但不是一回事....

python – 为未知的枚举值引发什么样的异常?【代码】

假设以下课程:class PersistenceType(enum.Enum):keyring = 1file = 2def __str__(self):type2String = {PersistenceType.keyring: "keyring", PersistenceType.file: "file"}return type2String[self]@staticmethoddef from_string(type):if (type == "keyring" ):return PersistenceType.keyringif (type == "file"):return PersistenceType.fileraise ???作为一个python noob,我只是想知道:应该在这里提出什么样的特殊异常?解...