+=
Python の演算子がリストで予期せず動作しているようです。誰がここで何が起こっているのか教えてもらえますか?
class foo:
bar = []
def __init__(self,x):
self.bar += [x]
class foo2:
bar = []
def __init__(self,x):
self.bar = self.bar + [x]
f = foo(1)
g = foo(2)
print f.bar
print g.bar
f.bar += [3]
print f.bar
print g.bar
f.bar = f.bar + [4]
print f.bar
print g.bar
f = foo2(1)
g = foo2(2)
print f.bar
print g.bar
出力
[1, 2]
[1, 2]
[1, 2, 3]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1]
[2]
foo += bar
クラスのすべてのインスタンスに影響foo = foo + bar
するようですが、私が物事が期待するように動作するようです。
この+=
演算子は「複合代入演算子」と呼ばれます。
+
、配列で演算子を使用することさえできません。この場合、+=
追加することは完全に理にかなっていると思います。