在Python中创建结构体

-2 投票
2 回答
4250 浏览
提问于 2025-04-20 21:01

目前我正在把一个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')

撰写回答