私は別のlist
様配列型をラップ自分List
クラスを書きました。アレイの容量は固定されており、アレイがいっぱいになると容量が自動的に倍増します。たとえば、基本容量が5で、配列がいっぱいで別の項目が追加されると、項目を追加する前に容量が2倍になります。その後、私は6つの項目より追記より先に行く[パイソン]
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で指定します。
は、ここに私のコードです。 Pythonはもはやスペースがあることを認識しない場合、右により、容量が倍増し、従って、18と20は、同様に添付することができるであろう。
私は容量がアペンド機能で定義されていないというエラーを取得しています。私が取得しようとしている出力は、次のとおりです。Pythonの内のオブジェクトのメンバーはself
参照からアクセスしなければならないので
4
7
1
3
2
17
18
20
「capacity」のみではなく、「self.capacity」を使用します。しかし、私はあなたのコードにそれ以外の問題があると感じています。 – Julien
'self.capacity'を通して' capacity'にアクセスしなければならないので、定義されていません。また、あなたがしようとしていることは '_array'をあなたがそれに追加したもの全てで上書きします。 – Unatiel