如何将这个C结构转换为Python

时间:2015-04-01 18:36:47

标签: python

我对Python很陌生,而且我很难弄清楚如何使用结构。下面的C结构在转换为Python时会是什么样的?

这些是我的结构:

struct dataT
{
    int m;
};

struct stack
{
    int top;
    struct dataT items[STACKSIZE];
} st;

如何在Python中表示此语句?

st.items[st.top].m

2 个答案:

答案 0 :(得分:2)

您只需要定义dataT

即可
class dataT():
    def __init__(self, m=0):
        self.m = m

您可以实例化

之类的内容
d = dataT(5)

您可以从stack类获得的list行为

>>> l = [dataT(i) for i in range(5)]
>>> l.pop().m
4
>>> l.pop().m
3
>>> l.pop().m
2
>>> l.pop().m
1
>>> l.pop().m
0
>>> l.append(dataT(3))
>>> l.pop().m
3

答案 1 :(得分:0)

您可以使用namedtuples来构造可以表示结构的类:

from collections import namedtuple
dataT = namedtuple("dataT", ['m'])
stack = namedtuple("stack", ['top', 'items'])

st = stack(0, [])
st.items.append(dataT(5))
st.items[st.top].m

虽然你可能会发现堆栈类是不必要的,因为指出列表已经有这种行为。