将参考类型复制到另一个[重复项]的效果

问题描述 投票:0回答:1

此问题已经在这里有了答案:

我有两个班级,如下:

class foo:
        def __init__(self):
            self.val = 10

class foo2:
    def __init__(self):
        self.val = 1000

当我将foo类的实例复制到变量中,然后更改foo类的值时,变量将发生变化。这是因为foo是引用类型,并且foo中的每个更改也会更改其实例。

    f = foo()
    b = f 
    print(b.val)
    f.val = 20
    print(b.val)
    >> 10
    >> 20

但是如果我将类foo2复制到类foo中,变量b不会更改为1000。对此的解释是什么?

f = foo2()
print(f.val)
print(b.val)

>> 1000
>> 20
python data-structures value-type
1个回答
0
投票

是此行:

b = f

您尚未创建f对象的copy,已为同一f对象创建了两个不同的引用。更改为任何一个都会更改两者,因为它们是same对象。

© www.soinside.com 2019 - 2024. All rights reserved.