+=
ผู้ประกอบการในหลามดูเหมือนว่าจะมีการดำเนินงานอย่างไม่คาดคิดในรายการ ใครช่วยบอกทีว่าเกิดอะไรขึ้นที่นี่?
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
ดูเหมือนว่าจะประพฤติในแบบที่ฉันคาดหวังให้สิ่งต่าง ๆ ประพฤติ
ตัว+=
ดำเนินการนี้เรียกว่า "ตัวดำเนินการกำหนดสารประกอบ"
+
โอเปอเรเตอร์ในอาร์เรย์ด้วยซ้ำ ฉันคิดว่ามันสมเหตุสมผลดีในกรณีนี้ที่+=
จะต่อท้าย