我知道python中的函数总是返回变量的引用。我很好奇属性的getter方法是否返回深拷贝,或者getter方法仅是形式并返回引用。
答案 0 :(得分:5)
所有方法都返回对对象的引用,除非您明确告诉它们进行复制(请参见here)。 getter方法的工作原理与任何其他方法相同,这意味着它将返回引用而不是副本。但是,如果要返回副本,则可以使用复制模块:
import copy
myvar = "abc"
myvar2 = copy.copy(myvar)
在此代码中,更改myvar
不会更改myvar2
,反之亦然。但是,如果您这样做:
myvar = "abc"
myvar2 = myvar
修改myvar
也会修改myvar2
,反之亦然,因为myvar
和myvar2
指的是同一对象。
在将参数传递给函数时,Python使用称为call by sharing的东西。这基本上意味着将对对象的引用传递给函数。这样可以修改传递给函数的参数。