在Python中创建结构体
目前我正在把一个Pascal程序移植到Python,下面是我现在的代码:
ScanList = Record
name : string;
I : Integer;
Lower,
Upper : Array [1..20] of real;
step : Array [1..20] of real;
counts : Array [1..20] of Integer;
Pol : Array [1..20] of Integer;
AverageNo: Array[1..20] of Integer;
Average : Array [1..20] of AveMode;
selected: Array [1..20] of Boolean;
saved,
loaded,
altered : Boolean;
end;
我已经把大部分代码重写成Python,现在看起来是这样的:
ScanList = Record
name = "Hello"
I = 0
Lower = [0 for i in range(20)]
Upper = [0 for i in range(20)]
step = [0 for i in range(20)]
counts = [0 for i in range(20)]
Pol = [0 for i in range(20)]
AverageNo = [0 for i in range(20)]
Average = [0 for i in range(20)]
selected = [0 for i in range(20)]
saved = True
loaded = True
altered = True
end
但我现在的问题是,我想把它做成一个结构体(就像旧的Pascal代码那样)。我已经看到过这个问题: Python中的C风格结构体,但是在那个问题里没有数组,而我这里有数组。我该如何把上面的代码移植成一个结构体呢?
谢谢!
2 个回答
0
这段内容和你提到的另一个回答有点相似。
class Record:
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
scanlist = Record(
name = "Hello",
I = 0,
Lower = [0 for i in range(20)],
...,
loaded = true,
altered = true)
请注意你代码中的一些不同之处:在Python中没有end
这个词;传给“struct”的参数是用逗号分开的;在Python中,变量名通常不会用大写字母开头。
1
这是一个把字典转换成结构的脚本:
class dict2struct:
"""
Creates a structure from a dictionary.
"""
def __init__(self, dict):
for key in dict:
val = dict[key]
exec('self.' + key + '=val')