我正在研究从二进制文件中读取数据的东西。数据格式通常存储为对应于不同类型的整数,我通常通过将可能的类型放入元组并对其进行索引来解释它们。假设A、B和C是类:
types = (A, B, C)
val = 0 # this would be read from the file
dataType = types[val]
最近,我在网上看到了一个看起来更干净的替代品,但我记不起它的具体内容,也没能再找到它。这对我来说似乎很好,但现在我很好奇,有更好的方法吗?
您可能正在考虑可以通过enum
模块访问的枚举。
枚举的python文档
>>> import enum
>>> class Types(enum.Enum):
... A = 1
... B = 2
... C = 3
...
>>> Types(1)
<Types.A: 1>
>>> Types(2)
<Types.B: 2>
>>> Types.B
<Types.B: 2>
>>> Types.C
<Types.C: 3>
您可能还会想到来自collections
模块的namedtuple
命名元组的python文档
>>> Point = namedtuple('Point', ['x', 'y'])
>>> p = Point(11, y=22)
>>> p[0] + p[1]
33
>>> x, y = p
>>> x, y
(11, 22)
>>> p.x + p.y
33
>>> p
Point(x=11, y=22)
然而,有无数种方法可以表示数据,这实际上取决于你正在进行的项目,以及在你当前的情况下什么最有意义。