【发布时间】:2019-04-17 12:44:57
【问题描述】:
我是 python 的新手,对以下代码的输出有点困惑。
class obj:
def __init__(self, data):
self.data = data
o1 = obj(2)
o2 = o1
def func1(obj):
obj.data = 5
func1(o1)
print(o1.data)
print(o2.data)
o2 = None
print(o1)
print(o2)
输出:
5
5
<__main__.obj instance at 0x7f7f6b5e63f8>
None
o1 对象不应该也变成“无”吗??
【问题讨论】:
-
您可能应该阅读nedbatchelder.com/text/names.html - 赋值不会影响值,只会影响标识符。
-
"o1 对象不应该也变成 'None' 吗?"没有。
-
o1不是对象;它是一个引用对象的 name。更改名称o2引用的内容不会影响o2使用 引用的对象(这是o1当前引用的对象)。
标签: python oop pass-by-reference