البرمجة

فهم الفارق بين ‘global’ و ‘self’ في Python

في عالم لغة البرمجة Python، تعتبر الفئتان ‘global varName’ و’self.varName’ طريقتين مختلفتين للتعامل مع المتغيرات والوصول إليها داخل الكلاس. لكن يتم استخدامهما في سياقات مختلفة وتحمل كل منهما معانٍ خاصة.

عندما تستخدم ‘global varName’ داخل الكونستركتور (الدالة __init__ في حالتنا)، فإنك تشير إلى أن المتغير varName يعتبر على مستوى البرنامج بأكمله، وليس مقتصرًا على الكائن (الـ instance) الحالي من الكلاس. هذا يعني أنه إذا تم تغيير قيمة varName في أي كائن آخر يشارك نفس المساحة الذاكرية، سيؤثر ذلك على القيمة التي تظهر لكل الكائنات الأخرى.

بالمقابل، عندما تستخدم ‘self.varName’، فإنك تنشئ متغيرًا مرتبطًا بالكائن الحالي (الـ instance) فقط. وهذا يعني أن كل كائن سيحتفظ بنسخة خاصة به من المتغير varName، وتغيير قيمة varName في كائن لن يؤثر على الكائنات الأخرى.

الكود المقدم يوضح هذه الفكرة، حيث تم استخدام ‘global varName’ في الكونستركتور، مما يعني أن varName سيكون مشتركًا بين جميع الكائنات. وفي النهاية من خلال تغيير قيمة varName في أحد الكائنات، تظهر تأثيرات هذا التغيير عند طباعة قيم الكائنات الأخرى.

الاختيار بين ‘global varName’ و’self.varName’ يعتمد على المتطلبات الخاصة للبرنامج. إذا كنت تحتاج إلى مشاركة قيمة المتغير بين جميع الكائنات، يمكن استخدام ‘global varName’، بينما يمكن استخدام ‘self.varName’ عندما تحتاج إلى متغير مستقل لكل كائن.

المزيد من المعلومات

تتيح لغة Python للمبرمجين استخدام ‘global’ للإشارة إلى أن المتغير ينتمي إلى نطاق البرنامج بأكمله. يتم استخدام ‘global’ عند الحاجة إلى الوصول إلى المتغير من أي مكان في البرنامج، بما في ذلك داخل الدوال أو الكلاسات. ومن الجدير بالذكر أنه يفضل تجنب استخدام ‘global’ في القدر الأكبر من الوقت، حيث يمكن أن يؤدي الاعتماد الكثير على المتغيرات العامة إلى صعوبة فهم الشيفرة وصيانتها.

على الجانب الآخر، ‘self.varName’ يستخدم لربط المتغير بالكائن الحالي (الـ instance) ويكون محددًا في نطاق الكلاس. وبهذا الشكل، يمكن لكل كائن أن يحتفظ بقيمة متغيره الخاصة به، مما يوفر تفصيلًا أكبر ومرونة أكبر في تصميم البرنامج.

إضافةً إلى ذلك، يُفضل استخدام ‘self.varName’ في معظم الحالات حيث يكون لديك كائنات متعددة من نفس الكلاس، وتحتاج إلى تتبع حالة كل منها بشكل مستقل. ذلك يجعل الشيفرة أكثر وضوحًا وقابلية للصيانة.

في ختام المطاف، يعتمد اختيار استخدام ‘global varName’ أو ‘self.varName’ على متطلبات تصميم برنامجك، ولكن يُفضل استخدام ‘self.varName’ في أغلب الحالات لضمان تنظيم وفهم أفضل لشيفرتك وتجنب تعقيدات النطاق العام.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر