+=
파이썬 의 연산자가 목록에서 예기치 않게 작동하는 것 같습니다. 아무도 여기서 무슨 일이 일어나고 있는지 말해 줄 수 있습니까?
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
내가 기대하는 방식으로 작동 하는 것 같습니다.
이 +=
연산자를 "복합 할당 연산자"라고합니다.
+
배열 에서 연산자 를 사용하는 것을 허용하지 않습니다 . 이 경우 +=
추가 되는 것이 완벽하다고 생각합니다 .