在下面的代碼段,參數傳遞通過引用
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沒有被函數修改,並且在調用插入函數之後仍然是無。據我所知,所有對象都通過python中的引用傳遞。我怎樣才能解決這個問題並修改對象而不返回它的新值呢?
事情不像在Python中的原始類型那樣工作。你可以從'insert'函數返回'x'。 –
如果你真的想在插入中改變參數,傳入一個單項列表:'def insert(x):if x [0] == None:x [0] = Test(10); obj = [None]; insert(obj); print(obj [0] .val)' – DyZ
@AhsanulHaque請你詳細說明一下嗎?我在想,我傳遞的是一個對象的引用,並且該引用被分配了一個對測試對象的引用。那麼爲什麼原始對象中沒有反映這種變化? – banad