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