我正在查看一个类的实现collections.UserList,并发现了一些不寻常的语法:
def __init__(self, initlist=None):
self.data = []
if initlist is not None:
# XXX should this accept an arbitrary sequence?
if type(initlist) == type(self.data):
self.data[:] = initlist
elif isinstance(initlist, UserList):
self.data[:] = initlist.data[:]
else:
self.data = list(initlist)
这行是什么意思?
self.data[:] = initlist.data[:]
我猜这是创建列表的浅表副本,但为什么要这样呢?为什么不简单写self.data = initlist.data[:]呢?这样的语法是否会产生一些我不知道的效果?