python
1class sample(): 2 def __init__(self): 3 self.x=[] 4 self.y=[] 5 self.List=[self.x,self.y] 6 def load(self,object): 7 with open("LogOfFile.pickle", "rb") as f: 8 object = pickle.load(f) 9 for i in len(object): 10 self.List[i]=object[i] 11 def save(self): 12 with open('LogOfFile.pickle', 'wb') as f: 13 pickle.dump(self.List, f) 14
上記のコードを見ていただきたいのですが
xやyを編集した際にはself.Listの中身も自動で書き換えられて、saveも無事にうまくいくのですが
loadをした際には、Listの方が無事に書き換えられるのですが、self.xの中身が空のままです。
今度は逆にself.xの中身を変更するように書き換えてみると今度はself.xの中身が空となっています。つまり、self.x(y)とself.Listが互いに独立した挙動を起こしてしまっているという事です。
なぜこのようなことが起こるのでしょうか?参照型なので互いに依存しているはずなので、この原因がわからないです。
あなたが期待していた結果と実際の結果を示していただけないでしょうか。
具体的には、
> xやyを編集した際にはself.Listの中身も自動で書き換えられて、saveも無事にうまくいく
> loadをした際には、Listの方が無事に書き換えられるのですが、self.xの中身が空のままです。
> 今度は逆にself.xの中身を変更するように書き換えてみると今度はself.xの中身が空となっています。
の部分の「xやyを編集した際」「書き換えられて」「self.xの中身を変更するように書き換えてみると」
等々のところについて、
ある程度具体的なプログラムのコード等で示していただけないでしょうか。
(文章からある程度推測はできますが、細かい部分であなたが疑問に思っている部分と乖離した理解のまま回答し、根本的な解決にならないor堂々巡りになる可能性があるため、最初から明確化しておいた方がいいと考えます)
たとえば、
「
```
s = sample()
s.x = [1,2,3]
s.y = [4,5,6]
s.List =[s.x,s.y]
s.save()
```
を実行した後、
```
s.load(obj)
print(s.x,s.y)
print(s.List)
```
を実行したところ、●●と表示されると思っていたが、〇〇と表示されてしまう。
」
という具合です。
(あと、「self.x(y)とself.Listが互いに独立した挙動を起こしてしまっている」という文章から察するに、「今度はself.xの中身が空となっています。」という部分は→「self.Listの中身が空」の誤りではありませんか?)
回答1件
あなたの回答
tips
プレビュー