"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يعمل الإصدار Super() الخاص بـ Python 3.x بدون وسيطات، وما هي المخاطر المحتملة؟

كيف يعمل الإصدار Super() الخاص بـ Python 3.x بدون وسيطات، وما هي المخاطر المحتملة؟

تم النشر بتاريخ 2024-11-07
تصفح:957

 How Does Python 3.x\'s Super() Work Without Arguments, and What Are the Potential Pitfalls?

Python 3.x's Super Magic: Unraveling the Mysteries

قدمت Python 3.x تطورًا مدهشًا في أسلوبها الفائق () ، مما يسمح يدعو دون الحجج. يحمل هذا التغيير الذي يبدو غير ضار عواقب وخيمة وسحرًا متأصلًا تحت الغطاء.

كشف السحر

للحفاظ على مبدأ DRY، يتجاوز سلوك super() الجديد الفئة الصريحة تسمية. يحتوي على خلية فئة خاصة تقوم باسترداد كائن الفئة الأصلي، وتجنب مخاطر إعادة الربط التي ابتليت بها الطريقة الفائقة السابقة.

عواقب السحر

لسوء الحظ، هذا السحر يأتي مع عيب. يمكن أن تؤدي إعادة ربط اسم super() إلى متغير مختلف، مثل super_، إلى تعطيل وظائفه. يحدث هذا لأنه يتم إنشاء الخلية فقط عند الإشارة إلى الطبقة الفائقة أو ضمن إحدى الطرق.

المخاطر العملية

يمكن أن يشكل هذا السلوك مخاطر على المبرمجون المطمئنون:

  • قد يؤدي إعادة ربط super () إلى استثناءات غير متوقعة.
  • يمكن أن يؤدي الاعتماد على super(type(self), self) أو super(self.__class__, self) في العودية اللانهائية عند استدعائها من فئة مشتقة.
  • يمكن لمصممي الفئة الذين يقومون بإرجاع كائنات فئة جديدة إبطال ربط اسم الفئة بـ super().

ما وراء Super()

ومن المثير للاهتمام أن super() ليس الكيان البايثوني الوحيد المتأثر بمشكلات إعادة الربط. تتضمن الأمثلة الأخرى ما يلي:

  • هذا في RPython الخاص بـ PyPy (على غرار __class__ الخاص بـ super())
  • يتم الوصول إلى أساليب المثيل عبر كائنات الطريقة غير المرتبطة (من المحتمل كسر @ property وclassmethod)
  • المكونات الإضافية المضمنة مثل الطباعة والكائن والقائمة عند استدعائها بدون تدوين نقطي

الآثار المترتبة على المطورين

على الرغم من أن سحر super() يمكن أن يكون مفيدًا، إلا أنه يستدعي الحذر. يساعد فهم تعقيداتها على منع أخطاء وقت التشغيل. عند استخدام عمليات إعادة الربط، يجب على المبرمجين التفكير في الإشارة إلى class بشكل صريح أو استخدام طرق استدعاء بديلة super().

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3