有没有一种方法可以方便地在Python中定义类似C的结构?我厌倦了写这样的东西:
class MyStruct():
def __init__(self, field1, field2, field3):
self.field1 = field1
self.field2 = field2
self.field3 = field3
发布于 2008-08-30 15:19:00
使用在Python2.6的标准库中添加到collections module中的named tuple。如果您需要支持Python2.4,也可以使用Raymond Hettinger的named tuple配方。
对于您的基本示例来说,这很好,但也涵盖了您稍后可能会遇到的一些边缘情况。上面的代码片段将被写成:
from collections import namedtuple
MyStruct = namedtuple("MyStruct", "field1 field2 field3")
新创建的类型可以像这样使用:
m = MyStruct("foo", "bar", "baz")
您还可以使用命名参数:
m = MyStruct(field1="foo", field2="bar", field3="baz")
发布于 2008-08-30 14:38:38
发布于 2010-09-21 23:15:34
也许你正在寻找没有构造函数的Structs:
class Sample:
name = ''
average = 0.0
values = None # list cannot be initialized here!
s1 = Sample()
s1.name = "sample 1"
s1.values = []
s1.values.append(1)
s1.values.append(2)
s1.values.append(3)
s2 = Sample()
s2.name = "sample 2"
s2.values = []
s2.values.append(4)
for v in s1.values: # prints 1,2,3 --> OK.
print v
print "***"
for v in s2.values: # prints 4 --> OK.
print v
https://stackoverflow.com/questions/35988
复制相似问题