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__()。

Copyright Notice: This article is exclusive original manuscripts, copyrighted by Happy Digits Software , shall not be reproduced without permission.