class Mylist(list):
def insert_head(self, n):
# 下面这种方法是不可行的,在这个方法中insert_head(2)的结果就是[3, 4, 5]
# L = [n] # 开辟了新的对象空间
# for x in self:
# L.append(x)
# print(L)
# self = L
# print(self)
#return self
# 因为这里返回的对象和原来myl指向的对象是不一样的,myl.insert_head(2) 不是赋值语句,
# 因此myl不会指向(绑定)所返回的对象([2,3,4,5]),而是指向[3,4,5]这个对象(地址)
# 下面两种方式是可行的,它们都是在原对象插入新的元素,然后myl绑定的对象不变
# self[0:0] = [n] # 用切片头插
self.insert(0, n)
myl = Mylist(range(3, 6))
print(myl)
myl.insert_head(2) # [2, 3, 4, 5]
print(myl)
myl.append(6)
print(myl)
总结:在变量和对象的等号赋值过程中,内存中将新开辟内存空间存储这个对象,然后(当变量原本指向一个变量时)变量指向的是新的内存空间