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)
總結:在變量和對象的等號賦值過程中,內存中將新開辟內存空間存儲這個對象,然后(當變量原本指向一個變量時)變量指向的是新的內存空間