我想创建自己的数据类以使代码更具可读性。Myclass
问题是当在列表中应用类(例如)时,我得到了意想不到的结果。特别是当我对列表中的单个成员执行计算时,所有成员都被视为一个变量;在这种情况下,结果等于所有成员的总和。考虑以下示例。
#!/usr/bin/env python
# create a simple class
class Myclass:
def __init__(self,mem):
self.mem = mem
def __repr__(self):
return '%d'%self.mem
# simple program: each list item should be unique
if __name__=='__main__':
# initate array
nlst = 3
dlst = [Myclass(0)]*nlst
ilst = [0]*nlst
# generate example data
for i in range(nlst):
for j in range(nlst)[i:]:
dlst[i].mem += (i+j)
ilst[i] += (i+j)
print 'dlst = ',dlst
print 'ilst = ',ilst
在这个例子中,一个列表dlst
(长度nlst = 3
)被初始化,其中成员的类型Myclass
是初始化为零。然后在循环中执行简单的加法。作为参考,包括整数列表(ilst
)。这个例子的结果应该是:
ilst = [3, 5, 4]
但对于该Myclass
类型的成员列表,结果是
dlst = [12, 12, 12]
即它们看起来是同一个变量,其值是列表中各个成员的总和。
请帮忙。