Các +=
nhà điều hành trong python dường như được hoạt động bất ngờ trong danh sách. Bất cứ ai có thể cho tôi biết những gì đang xảy ra ở đây?
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
ĐẦU RA
[1, 2]
[1, 2]
[1, 2, 3]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1]
[2]
foo += bar
dường như ảnh hưởng đến mọi trường hợp của lớp, trong khi foo = foo + bar
dường như hành xử theo cách mà tôi mong đợi mọi thứ sẽ hoạt động.
Các +=
nhà điều hành được gọi là "toán tử gán ghép".
+
toán tử trên các mảng. Tôi nghĩ rằng nó có ý nghĩa hoàn hảo trong trường hợp này +=
sẽ thêm vào.