我有一些代码,其中一个对象包含两个其他对象的列表,而这两个对象是密切相关的。我希望这些对象相互引用而不复制数据。 在下面的代码中,是
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
在python中,一个对象一旦初始化就只占据一个物理位置。 重新分配和作为参数传递不会导致同一对象的多个副本。同样,在一个位置修改对象会影响其他所有位置的对象
除非执行深度复制,否则不会复制内存中对象的物理存在
不,您的代码不会复制对象。它只是引用了两个不同的列表
希望这能回答你的疑问
相关问题 更多 >
编程相关推荐