次のコード ブロック 1 の結果が出力 2 ではなく出力 1 になる理由が本当にわかりません。
コードブロック 1:
class FruitContainer:
def __init__(self,arr=[]):
self.array = arr
def addTo(self,something):
self.array.append(something)
def __str__(self):
ret = "["
for item in self.array:
ret = "%s%s," % (ret,item)
return "%s]" % ret
arrayOfFruit = ['apple', 'banana', 'pear']
arrayOfFruitContainers = []
while len(arrayOfFruit) > 0:
tempFruit = arrayOfFruit.pop(0)
tempB = FruitContainer()
tempB.addTo(tempFruit)
arrayOfFruitContainers.append(tempB)
for container in arrayOfFruitContainers:
print container
**Output 1 (actual):**
[apple,banana,pear,]
[apple,banana,pear,]
[apple,banana,pear,]
**Output 2 (desired):**
[apple,]
[banana,]
[pear,]
このコードの目的は、配列を反復処理し、それぞれを親オブジェクトにラップすることです。これは、すべてのリンゴをリンゴの袋などに追加する実際のコードを縮小したものです。私の推測では、何らかの理由で、同じオブジェクトを使用しているか、フルーツ コンテナーが静的配列を使用しているかのように動作していると思われます。これを修正する方法がわかりません。