在下面的代码段中,
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中的引用传递的。如何解决这个问题并修改对象而不返回其新值?
答案 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)