我寫了自己的List
類,它包裝了另一個類似list
的數組類型。陣列具有固定容量,當陣列滿時,我希望容量自動加倍。例如,如果我的基本容量是5,那麼當數組已滿並且添加另一個項目時,在添加項目之前,它將容量加倍爲10。在類[python]中創建動態數組
這裏是我的代碼:
from referential_array import build_array
class List:
def __init__(self,capacity):
assert capacity >0, "Capacity cannot be negative"
self.count = 0
self._array = build_array(capacity)
self.capacity = capacity
def append(self,item):
has_space_left = not self.is_full()
if has_space_left:
self._array[self.count] = item
self.count+=1
else: #Issue here
create_more_space = List.__init__(self,capacity*2) #if list is full, capacity *2
self.count+=1
if __name__== "__main__":
myList = List(6)
myList.append(4)
myList.append(7)
myList.append(1)
myList.append(3)
myList.append(2)
myList.append(17)
myList.append(18)
myList.append(20)
下面
,第一我指定的大小爲6。然後我繼續追加超過600項以上。右邊,當python看到沒有空間時,容量會翻倍,因此18和20也可以被附加。
我收到一個錯誤,說容量沒有在追加函數中定義。我試圖讓輸出是:
4
7
1
3
2
17
18
20
單獨使用'self.capacity'而不是'capacity'。但是我覺得在你的代碼中還有其他問題只是看着它... – Julien
它沒有被定義,因爲你必須通過'self.capacity'來訪問'capacity'。另外,你正在嘗試做的事情是用你附加的所有東西來覆蓋'_array'。 – Unatiel