用数据类型映射整数



我正在研究从二进制文件中读取数据的东西。数据格式通常存储为对应于不同类型的整数,我通常通过将可能的类型放入元组并对其进行索引来解释它们。假设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)

然而,有无数种方法可以表示数据,这实际上取决于你正在进行的项目,以及在你当前的情况下什么最有意义。

最新更新