Aşağıdaki kod bloğu 1'in neden çıkış 2 yerine çıkış 1 ile sonuçlandığına gerçekten takıldım mı?Python Scoping/Static Misunderstanding
Kod bloğu 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,]
Bu kodun amacı bir dizi yineleme ve bir üst nesne her sarılmasıdır. Bu, tüm elmaları bir elmalı çuvala ve buna benzer şekilde ekleyen gerçek kodumun azalmasıdır. Benim tahminimce, bir nedenden dolayı, aynı nesne kullanıyor ya da meyve konteyneri statik bir dizi kullanıyormuş gibi davranıyor. Bunu nasıl düzelteceğimi bilmiyorum.
Sorunuza bir cevap değil, aynı zamanda dikkat çekicidir: "while (arrayOfFruit)> 0:", "arrayOfFruit:" iken.İkincisi, en azından Python Stil Kılavuzuna göre tercih edilir. –