在我的脚本中,我有这些类:
class action:
def __init__(self,ac_type,ac_date):
self.ac_type = ac_type
self.ac_date = ac_date
class user:
actions = []
def __init__(self,i_id):
self.ivi_id = i_id
def add(self,act):
self.actions.append(act)
def get_len(self):
return len(self.actions)
我想创建"用户"的列表元素并添加到一些主题动作。我通过以下方式执行此操作:
for i in range(len(data_queue)):
ind = users_id.index(data_queue[i].i_id);
act = action(0,data_queue[i].added)
users[ind].add(act)
但是在运行之后我看到data_queue中的每个操作都被添加到用户的每个用户中。这是错的!我该怎么改变?
答案 0 :(得分:3)
代码使用的是class属性,它由类的所有实例和类本身共享。
改为使用实例属性:
class user:
def __init__(self,i_id):
self.ivi_id = i_id
self.actions = []
def add(self,act):
self.actions.append(act)
def get_len(self):
return len(self.actions)
BTW,代码使用索引来迭代序列data_queue
。只是迭代序列,除非你真的需要索引。
for queue in data_queue:
ind = users_id.index(queue.i_id)
act = action(0, queue.added)
users[ind].add(act)