大多数pythonic存储和使用自己的状态代码的方法

大多数pythonic存储和使用自己的状态代码的方法,python,Python,这确实是一个非常愚蠢的问题(可能有点基于观点),但我如何创建一个类似于枚举的对象来存储错误代码之类的东西,这些错误代码是常量,稍后将在代码中访问 我想到有四种选择: 1) 一个状态代码-一个变量 STATUS_NEW = 0 STATUS_PENDING = 1 STATUS_DONE = 2 STATUS_ERROR = -1 if some_object.status == STATUS_NEW: print 'this object is pretty fresh!' 我觉得这

这确实是一个非常愚蠢的问题(可能有点基于观点),但我如何创建一个类似于枚举的对象来存储错误代码之类的东西,这些错误代码是常量,稍后将在代码中访问

我想到有四种选择:

1) 一个状态代码-一个变量

STATUS_NEW = 0
STATUS_PENDING = 1
STATUS_DONE = 2
STATUS_ERROR = -1

if some_object.status == STATUS_NEW:
    print 'this object is pretty fresh!'
我觉得这不太好

2) 包含以其名称为键的所有状态代码的字典:

STATUS = {'new': 0, 'pending': 1, 'done': 2, 'error': -1}

if some_object.status == STATUS['new']:
    print 'you got the idea.'
这看起来更难看,但一个物体还是比几个好

3) a看起来更好,但在初始化时对我来说更糟:

STATUS = namedtuple('Status', ['error', 'new', 'pending', 'done'])
STATUS = STATUS(error=-1, new=0, pending=1, done=2)

if some_object.status == STATUS.new:
    print 'looks prettier than using dict!'
4) 使用类:

class Status:
    NEW = 0
    PENDING = 1
    DONE = 2
    ERROR = -1

if some_object.status == Status.NEW:
    pass
我错过什么了吗?更令人鼓舞的是什么


提前谢谢

python中的枚举正是为此而设计的

from enum import Enum

class STATUS(Enum):
    NEW = 0
    PENDING = 1
    DONE = 2
    ERROR = -1

枚举从3.4开始提供。如果你不是很幸运的话,pypi有一个可用的后端口。

python中的枚举正是为此而设计的

from enum import Enum

class STATUS(Enum):
    NEW = 0
    PENDING = 1
    DONE = 2
    ERROR = -1

枚举从3.4开始提供。如果你不是很幸运,pypi有一个可用的后端口。

对于python<3.4,我个人更喜欢第四个,但是

if some_object.status == Status.NEW:
    pass

不要那样做。您可能希望为外部工具返回错误代码,但在所有Python环境中都应该使用异常。不同的错误代码只是引发了不同的异常。

对于python<3.4,我个人更喜欢第四个,但是

if some_object.status == Status.NEW:
    pass

不要那样做。您可能希望为外部工具返回错误代码,但在所有Python环境中都应该使用异常。不同的错误代码只是不同的异常。

我会选择2,但是这是来自C++背景,并且感觉最像是枚举,这是我可能会接近的方法。在我中,有几种方法来实现枚举,我会选择2,但是这是来自C++背景,并且感觉最像枚举,这就是我可能的方法。在中实现枚举的几种方法,然后以
状态访问它们。新建
等?我的意思是@trengt是。然后以
状态访问它们。新建
等?我的意思是@trengt是。