Python 3.4.0介绍enum,我已经阅读了doc但仍然不知道它的用法.从我的角度来看,枚举是一种扩展namedtuple类型,可能不是真的.所以这些是我想知道的枚举:
Python 3.4有一个新的枚举模块和Enum数据类型.如果您还无法切换到3.4,则Enum已被移植.
由于Enum成员支持docstrings,就像所有python对象一样,我想设置它们.有一个简单的方法吗?
我想将字符串解析为python枚举.通常会实现一个解析方法来执行此操作.几天前,我发现了__new__方法,该方法能够根据给定的参数返回不同的实例.
这是我的代码,它不起作用:
import enum
class Types(enum.Enum):
Unknown = 0
Source = 1
NetList = 2
def __new__(cls, value):
if (value == "src"): return Types.Source
# elif (value == "nl"): return Types.NetList
# else: raise Exception()
def __str__(self):
if (self == Types.Unknown): return "??"
elif (self == Types.Source): return "src"
elif (self == Types.NetList): return "nl"
Run Code Online (Sandbox Code Playgroud)
当我执行我的Python脚本时,我收到以下消息:
[...]
class Types(enum.Enum):
File "C:\Program Files\Python\Python 3.4.0\lib\enum.py", line 154, in __new__
enum_member._value_ = member_type(*args)
TypeError: object() takes no parameters
Run Code Online (Sandbox Code Playgroud)
如何返回枚举值的正确实例?
此枚举用于URI解析,特别是用于解析架构.所以我的URI看起来像这样 …