Python里类变量和实例变量的区别

来源:互联网 发布:mysql数据库管理工具 编辑:程序博客网 时间:2024/06/04 17:44

最近遇到一个非常尴尬的问题。

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就是实例变量啦

0 0