Gho*_*ica 3 python enums exception
假设以下课程:
class PersistenceType(enum.Enum):
keyring = 1
file = 2
def __str__(self):
type2String = {PersistenceType.keyring: "keyring", PersistenceType.file: "file"}
return type2String[self]
@staticmethod
def from_string(type):
if (type == "keyring" ):
return PersistenceType.keyring
if (type == "file"):
return PersistenceType.file
raise ???
Run Code Online (Sandbox Code Playgroud)
作为一个python noob,我只是想知道:应该在这里提出什么样的特殊异常?
简短的回答是ValueError:
当内置操作或函数接收到具有正确类型但不适当值的参数时引发,并且情况不会被更精确的异常描述,例如
IndexError.
答案越长,几乎所有类都不存在.考虑:
class PersistenceType(enum.Enum):
keyring = 1
file = 2
Run Code Online (Sandbox Code Playgroud)
这为您提供了自定义枚举所做的一切:
要获得与自定义__str__方法相同的结果,只需使用name属性:
>>> PersistenceType.keyring.name
'keyring'
Run Code Online (Sandbox Code Playgroud)要使用其名称获取枚举的成员,请将枚举视为dict:
>>> PersistenceType['keyring']
<PersistenceType.keyring: 1>
Run Code Online (Sandbox Code Playgroud)使用内置功能可以Enum.enum带来以下几个优点:
你编写的代码要少得多.
你没有重复整个地方的枚举成员的名字,所以如果你在某个时候修改它,你不会错过任何东西.
枚举的用户和使用它的代码的读者不需要记住或查找任何自定义方法.
如果你是从Java开始使用Python,那么值得记住的是:
Python不是Java(或者,停止编写这么多代码)
Guido 1有一台时间机器(或者,停止写这么多代码)
1 ...或者在这种情况下,enum模块的作者Ethan Furman .
| 归档时间: |
|
| 查看次数: |
2096 次 |
| 最近记录: |