这个代码是复制一个对象还是引用它?

2024-04-20 12:59:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些代码,其中一个对象包含两个其他对象的列表,而这两个对象是密切相关的。我希望这些对象相互引用而不复制数据。 在下面的代码中,是

Parent.foo[0].bar

引用

Parent.bar[0]

还是复制品

class Parent(object):
def __init__(self, data):
    self.data = data
    self.foo = []
    self.bar = []

def populate(self):
    for item in self.data:
        self.foo.append(Foo(item['foo']))
        self.bar.append(Bar(item['bar']))
        self.foo[-1].bar = self.bar[-1]
        self.bar[-1].foo = self.foo[-1]

class Foo(object):
    def __init__(self, data):
        self.data = data

class Bar(object):
    def __init__(self, data):
        self.data = data

Tags: 对象代码selfdataobjectfooinitdef
1条回答
网友
1楼 · 发布于 2024-04-20 12:59:35

在python中,一个对象一旦初始化就只占据一个物理位置。 重新分配和作为参数传递不会导致同一对象的多个副本。同样,在一个位置修改对象会影响其他所有位置的对象

除非执行深度复制,否则不会复制内存中对象的物理存在

不,您的代码不会复制对象。它只是引用了两个不同的列表

希望这能回答你的疑问

相关问题 更多 >