最近遇到一个非常尴尬的问题。
class Tag:
members = []
def __init__(self, iid):
self.members.append(iid)
list = []
list.append(Tag(1))
list.append(Tag(2))
list[0].members[0].append(2)
结果跑出来,list中两个对象里的members都增加了2
原因在于这个members是一个类变量,是所有生成对象共享的
应该写成
class Tag:
def __init__(self, feature_list, iid):
self.members = []
self.features = feature_list
self.members.append(iid)
这里的members就是实例变量啦