Python 對象原位賦值 容器__init__初始化


對 Python 對象原位賦值在編程中很常見,目的是為保持 id() 值不變,從而使變量實現跨類 模塊傳遞參數。

list


相比 tuple,list 容器本身是可變的,要保持其 id() 值不變可采用原位賦值操作 (如 += -=)。

若原位賦值操作對模塊全局變量失效,可考慮使用 __init__() 特殊方法。

>>> a = [1, 2, 3]
>>> id(a)
40404424
>>> b = a
>>> id(b)
40404424
 
>>> b.__init__(list(b))
>>> b
[1, 2, 3]
>>> id(b)
40404424
 
>>> b.__init__(b)
>>> b
[]
>>> id(b)
40404424
					

注意:若 __init__() 前後內容 ID 相同,將導緻 list 變為空。

解決辦法是首先使用 list() set() tuple() 等將其變成不同 ID 對象,然後再 __init__()。

版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。