对 Python 对象原位赋值在编程中很常见,目的是为保持 id() 值不变,从而使变量实现跨类 模块传递参数。
相比 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__()。
版权声明: 本文为独家原创稿件,版权归 乐数软件 ,未经许可不得转载。