2017-04-27 100 views
0

我想在python上使用struct,就像下面的C风格一样。Python:如何在python中表达C风格的结构?

typedef 
{ 
    int a; 
    int b; 
}my_struct_t; 

my_strut_t func(my_strut_t ttt, int var1, int var2) 
{ 
    ttt.a = var1; 
    ttt.b = var2; 

    return ttt; 
} 

main() 
{ 
    my_struct_t my_struct; 

    my_struct = func(my_struct, 10, 20); 

    printf("a=%d, b=%d", my_struct.a, my_struct.b); 
} 

您可以将上面的C风格代码转换为python脚本吗?

谢谢。

+0

你到目前为止尝试过什么? –

+5

[Python中类C结构]的可能重复(http://stackoverflow.com/questions/35988/c-like-structures-in-python) –

+0

考虑使用[namedtuple](https://docs.python .org/3/library/collections.html#collections.namedtuple)类型。它被明确写入来处理像这样的记录类型。 –

回答

0

你可以做在Python,而不是一个struct

class my_struct_t(object): 
    def __init__(self, a, b): 
     self.a = a 
     self.b = b 

def main(): 
    my_struct = my_struct_t(10, 20) 
    print('a={}, b={}'.format(my_struct.a, my_struct.b)) 
0

使用class一个class

class Struct: 
    pass 

# or, equivalently: 

Struct = type("Struct",(), {}) 

然后你就可以动态创建该类的成员:

test = Struct() 

test.a = 5 # create a new member 
print(test.a) 

print(test.b) # Error: this member doesn't exist 
# but you can create it easily 

然后,一旦你创建了所有需要的成员为每个实例,你可以通过这个类的实例周围等

要知道,新初始化实例有除了一些默认的任何成员。