我正在修改一家公司提供的代码(用于控制仪器)。我本人并不是 Python 专家,因此我想了解采用某种方法是否有任何特定优势。
他们的代码基本上是这样的:
def enum(**enums):
return type('Enum', (), enums)
Inst = enum(
CONTINUE = 0,
STOP = 1,
LOOP = 2,
END_LOOP = 3,
JSR = 4,
RTS = 5,
BRANCH = 6,
LONG_DELAY = 7,
WAIT = 8,
RTI = 9
)
他们使用它来访问上面的“entries”值,例如:
Inst.RTS
% 5
据我的理解,Inst
是一个 type
对象。
为了存储字符串及其相关值,我也可以定义一个 dict
:
Inst = {'CONTINUE':0, 'STOP':1, 'LOOP':2, 'END_LOOP':3, 'JSR':4, 'RTS':5}
最终基本上达到了相同的结果:
Inst['RTS']
% 5
问题
type
对象与普通的 dict
相比有什么用处 / 优势?还是上面的例子只是个糟糕的例子?
enum.Enum
的一个快速而简单的版本,可能是在它被添加到标准库之前,所以我认为这不是一个很好的例子。但在这里,这只是一个风格问题。 - juanpa.arrivillagatype
构造函数动态生成一个类对象,即类型对象。您也可以使用class
语句来完成此操作。 - juanpa.arrivillaga