防止在python中修改返回的列表

时间:2012-12-13 14:48:14

标签: python list

我正在研究我的python技巧,正在尝试创建一些类。由于python是基于引用的,因此类方法返回的任何列表都可以被调用者修改,然后调用者将反映在类中(就像我一样)。避免这种情况的正确方法是什么?我在考虑将嵌套列表转换为嵌套元组还是进行深层复制?

1 个答案:

答案 0 :(得分:2)

返回元组是回放不可变列表的一种相当标准的方法。另一种选择是返回列表的不可变“视图”。我不认为stdlib当前包含这样的类,所以你可能不得不自己动手,但它会相当直接。基本上,该类将包含一个私有实例变量(基础列表);并且只实现读操作(__getitem____len__等)并将它们委托给实例变量(根据需要包装“view”对象中的任何子项)。

相关问题