属性的getter方法是否返回浅表副本

时间:2018-12-14 23:00:06

标签: python

我知道python中的函数总是返回变量的引用。我很好奇属性的getter方法是否返回深拷贝,或者getter方法仅是形式并返回引用。

1 个答案:

答案 0 :(得分:5)

所有方法都返回对对象的引用,除非您明确告诉它们进行复制(请参见here)。 getter方法的工作原理与任何其他方法相同,这意味着它将返回引用而不是副本。但是,如果要返回副本,则可以使用复制模块:

import copy

myvar = "abc"
myvar2 = copy.copy(myvar)

在此代码中,更改myvar不会更改myvar2,反之亦然。但是,如果您这样做:

myvar = "abc"
myvar2 = myvar

修改myvar也会修改myvar2,反之亦然,因为myvarmyvar2指的是同一对象。

在将参数传递给函数时,Python使用称为call by sharing的东西。这基本上意味着将对对象的引用传递给函数。这样可以修改传递给函数的参数。