python的类成员是个dict,应该如何更新?

初学python,遇到个不解的问题,求教大神们,多谢了!!!

class T:
    d = {}
    
if __name__ == "__main__":
    
    t1 = T()
    t2 = T()
    t1.d["a"] = 1
    t2.d["b"] = 2
    print t1.d
    print t2.d

以上代码的输出如下:

{'a': 1, 'b': 2}
{'a': 1, 'b': 2}

为什么2个对象的成员会共享?应该怎么解决?

我的目标是打印出

{'a': 1}
{'b': 2}
阅读 2.7k
1 个回答

不了解你的需求,既然是类成员变量,又要和实例绑定?
类变量是所有实例共享的,实例变量才属于实例

class T:
    def __init__(self):
        self.d = {}
    
if __name__ == "__main__":
    
    t1 = T()
    t2 = T()
    t1.d["a"] = 1
    t2.d["b"] = 2
    print t1.d
    print t2.d
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题