Python怎么避免不同的实例之间共享变量?

发布于 2022-09-02 00:49:54 字数 414 浏览 18 评论 0

如下定义一个类,成员变量是mutable的

class MyClass:
    __value = []
    def append(self,value):
        __value.append(value)
    def get(self):
        return self.__value

然后实例化

instance_a = MyClass()
instance_b = MyClass()
instance_a.append(100)
print instance_b.get()  #结果输出了 [100],说明成员变量在不同实例间被共享

现在我不想变量(list,dict等等类型的)被不同实例共享,应该怎么做?难道只能用基本数据类型作为成员变量吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浅浅淡淡 2022-09-09 00:49:54

你所声明的是类变量而非成员变量,也就是说你的value是绑定到类型的,而不是实例上。

试试这个

def A(object):
    def __init__():
        self.value = [ ]
    def append(v):
        self.value.append(v)
[浮城] 2022-09-09 00:49:54
class MyClass():
    def __init__(self):
        self.value=[]
    def append(self,value):
           self.value.append(value)
    def get(self):
           return self.value
instance_a=MyClass()
instance_b=MyClass()
instance_a.append(100)
print instance_b.get()
print instance_a.get()
单挑你×的.吻 2022-09-09 00:49:54

题主可以看看这个:https://www.zhihu.com/question/25874136
关于静态变量、实例变量的讲解。
至于具体如何操作,上面两个答案已经很清楚的列出来了。

实例变量是要在`__init__(self)`中定义的变量。如果没有定义变量,那就会搜索scope上同名变量。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文