对象分配和引用问题

问题描述

可以说我有以下代码

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()中注释掉对象的创建,并传递了要更改其值的类的对象。

您之前传递了类的对象,但更改了其他对象的值。

快乐编码