أحاول التطبيق على OOP ولكن عند إستخدام المعامل += يحدث أمر غير متوقع، في الكود التالي يوجد صنفين foo و foo2 وعند عمل كائن من كل صنف وإضافة قيمة إلى القائمة bar يتم إضافتها أيضًا إلى الكائن الآخر!!
>>> 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)
>>> f.bar
[1, 2]
>>> g.bar
[1, 2]
>>> f.bar += [3]
>>> f.bar
[1, 2, 3]
>>> g.bar
[1, 2, 3]
لماذا أصبح الكائن g يحتوي على نفس القائمة أيضًا؟
هذه المشكلة لا تحدث إن قمت بإستخدام الطريقة العادية كالتالي:
>>> f.bar = f.bar + [4]
>>> f.bar
[1, 2, 3, 4]
>>> g.bar
[1, 2, 3]
>>>
ما الفرق بين الطريقة الأولى والثانية؟