我对Python很陌生,而且我很难弄清楚如何使用结构。下面的C结构在转换为Python时会是什么样的?
这些是我的结构:
struct dataT
{
int m;
};
struct stack
{
int top;
struct dataT items[STACKSIZE];
} st;
如何在Python中表示此语句?
st.items[st.top].m
答案 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
虽然你可能会发现堆栈类是不必要的,因为指出列表已经有这种行为。