【发布时间】:2017-02-05 10:21:20
【问题描述】:
我想继承list 以添加一些功能,例如my_func。
在创建MyList 对象并让MyList 引用与用于构造它的列表相同的列表时,有没有办法在不复制整个列表的情况下执行此操作,即进行浅拷贝?
class MyList(list):
def my_func(self):
# do some stuff
return self
l1 = list(range(10))
l2 = MyList(l1)
print(l1)
print(l2)
l1[3] = -5
print(l1)
print(l2)
【问题讨论】:
-
l2 = l1赋值在 Python 中进行浅拷贝。要进行深层复制,请使用l2 = l1[:] -
@PatrickHaugh 大错特错。
l2 = l1[:]是浅拷贝。l2 = l1根本不是副本,只是绑定到同一个对象的另一个名称。 -
@wim,这都是术语。我认为
l2 = l1是一个(浅)副本。具体来说,是列表指针的副本。 -
对不起,python 中没有指针之类的东西。下面都是字典(名称和对象)。
-
@AaronMcDaid
l2 = l1与浅拷贝的区别就像浅拷贝与深拷贝的区别一样。
标签: python list python-3.x oop inheritance