前提
pythonでlistを内包するclassオブジェクトを複数作成してもlistだけ共有されてしまいます。
実現したいこと
listも個別であって欲しいです。
発生している問題・エラーメッセージ
listを内包するclassを複数作成した所、listだけ共有されてしまいます。
該当のソースコード
python
1class test : 2 def __init__(self, d): 3 self.data.append(d) 4 self.data2 = d 5 data = [] 6 data2 = 0 7 8a = test(1) 9b = test(2) 10c = test(3) 11 12print(a.data2,b.data2,c.data2,len(a.data),len(b.data),len(c.data))
試したこと
該当のソースコードを実行すると
1 2 3 3 3 3
と表示されます。
期待する動作としては
1 2 3 1 1 1
であって欲しいです。
data2(リスト)だけ共有されてしまっている感じです。
補足情報(FW/ツールのバージョンなど)
a = test(1)
b = test(2)
c = test(3)
d = test(4)
print(a.data2,b.data2,c.data2,len(a.data),len(b.data),len(c.data))
とすると
1 2 3 4 4 4
となります。
エラーの出ない形でソースコードを提示いただけませんか。
pythonはインデントがわからないと読めないので、コードを<code>ボタンで出てくる```と```の間に入れてください。
質問は編集できます。
TakaiY様。失礼いたしました。編集させて頂きました。
現状のコードだと,class testが作成された時点で,リストdataは全てのclass testで同一のものを扱ってしまうので,初期化__init__()ごとにリストを用意しなくてはなりません.
https://paiza.io/projects/NEutP1v5SDpGsFE4rUHPfA
回答2件
あなたの回答
tips
プレビュー
