次のコードは私が遭遇した問題であり、説明を探しています。コードの動作が予想とは異なります。コードの下に、予想される出力と実際の出力が表示されます。最後に 1 つ注意しておきたいのは、このコードは「奇妙」かもしれないということです。この理由は、プログラムでのこの正確な発生 (範囲は変数でしたが、これらの値で) が問題を引き起こしたためです..そのため、この単純なコードを複製して複製しました。
userList = []
class User():
listA = []
listB = []
def setup(self):
for i in range(1):
self.listA.append('a')
self.listB.append('b')
for i in range(5):
user = User()
userList.append(user)
for i in range(len(userList)):
userList[i].setup()
for i in range(len(userList)):
print str(userList[i].listA)
print str(userList[i].listB)
期待される出力
['a']
['b']
['a']
['b']
['a']
['b']
['a']
['b']
['a']
['b']
実際の出力
['a','a','a','a','a']
['b','b','b','b','b']
['a','a','a','a','a']
['b','b','b','b','b']
['a','a','a','a','a']
['b','b','b','b','b']
['a','a','a','a','a']
['b','b','b','b','b']
['a','a','a','a','a']
['b','b','b','b','b']
討論
なぜこれが起こっているのかについての説明に感謝します。組み込みの append() 関数が何らかの理由ですべてのユーザーに影響を与えているのか、それとも各ユーザーが何らかの形でフィールドを共有しているのかはわかりません。Python 2.7.3 で実行されます。