通过引用传递python中的参数

时间:2017-06-10 05:31:56

标签: python python-3.x

在下面的代码段中,

class Test:
    def __init__(self, val):
        self.val = val


def insert(x):
    if x == None:
        x = Test(10)

obj =  None
insert(obj)
print(obj.val)

我原本期望print语句的输出为10但是得到了AttributeError: 'NoneType' object has no attribute 'val'。这是因为函数没有修改obj,并且在调用insert函数之后仍然是 None 。据我所知,所有对象都是通过python中的引用传递的。如何解决这个问题并修改对象而不返回其新值?

1 个答案:

答案 0 :(得分:1)

首先,您必须从函数insert中返回变量。

其次,您必须将行插入(obj)分配给变量。

Val仍然在Test类中。 你必须从课堂内打印出来。 另外,obj.val不存在。

class Test:
    def __init__(self, val):
        self.val = val
        print(val)



def insert(x):
    if x == None:
        x = Test(10)
    return(x)

obj =  None
Var_Ref=insert(obj)
print(Var_Ref)