问题描述
class asd:
def __init__(self):
self.var = "default"
def changeagain():
xa = asd()
xa.var = "changed"
return xa
def change(objct:asd):
newobjc = changeagain()
objct = newobjc
print(objct.var)
test = asd()
change(test)
print(test.var)
我期望输出为:
changed
changed
尽管如此,我仍然得到:
changed
default
出什么问题了?
要获得所需的输出我必须做什么?
解决方法
在这里,您正在更改对象的实例变量的值,并期望更改b反映在另一个对象中。而对象的实例变量是不可能的。
根据您的需要,我更改了程序中的某些语句:
class asd:
var = "default"
def changeagain():
xa = asd()
asd.var = "changed"
return xa
def change(objct:asd):
newobjc = changeagain()
objct = newobjc
print(objct.var)
test = asd()
change(test)
print(test.var)
,
class asd:
def __init__(self):
self.var = "default"
def changeagain(asd):
# xa = asd()
asd.var = "changed"
return asd
def change(asd):
newobjc = changeagain(asd)
objct = newobjc
print(objct.var)
test = asd()
change(test)
print(test.var)
我已在changeagain()中注释掉对象的创建,并传递了要更改其值的类的对象。
您之前传递了类的对象,但更改了其他对象的值。
快乐编码