重複の可能性: Python Python OOP およびリスト
の静的クラス変数
これについて何か助けが得られるかどうか疑問に思っています。
私はPythonを使用していますが、私が取り組んでいる小さなプログラムでは理解できないような障害にぶつかりました。これが私の問題です(非常に単純で無関係な例を使用):クラスがあります:
class dog:
name = ''
friends = []
私はそれからいくつかのオブジェクトを作成します:
fido = dog()
rex = dog()
そして、ここで行き詰まります。なぜこれが起こっているのかわかりませんし、理解していません。何かについての私の理解が不足していると思いますが、どんな説明でも素晴らしいでしょう。したがって、あるオブジェクトを別のオブジェクトに追加すると、ここに私の問題があります(これは問題なく動作するはずです):
fido.friends.append(rex)
...物事が台無しになります。ここでわかるように:
>>> fido.friends.append(rex)
>>> fido.friends
[<__main__.dog instance at 0x0241BAA8>]
>>> rex.friends
[<__main__.dog instance at 0x0241BAA8>]
>>>
それは私には意味がありません。fido.friends だけが何かを持っているべきではありませんか? 新しいオブジェクトを作成しても:
rover = dog()
その中に犬のインスタンスがあり、これが「rex」オブジェクトであることがわかります。
>>> rex.name = "rex"
>>> fido.friends[0].name
'rex'
>>> rex.friends[0].name
'rex'
>>> rover.friends[0].name
'rex'
>>>
これでは意味がありません。助けていただければ幸いです。説明を見つけようとしてしばらく検索しましたが、見つかりませんでした。私が見逃した同様の質問があれば申し訳ありません。