• 0

ما الفرق بين __getattr__ و __getattribute__ في بايثون؟

أريد معرفة الفرق بين __getattr__ و __getattribute__، لأنني لحد الآن لا أعرف متى أستخدم كل واحدة منهما، قرأت في إحدى المقالات أن __getattribute__ ينطبق عليها أصناف النمط الجديد (new-style classes)، فهل هذا صحيح؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

إن الفرق الرئيسي بين دالتي __getattr__ و __getattribute__ هو أن الأولى تُستخدم فقط في حالة لم يتم إيجاد السمة (attribute) بالطرق العادية، أي أنها تعتبر كأنها خطة احتياطية لإيجاد السمات المفقودة.
أما بالنسبة إلى __getattribute__ فهي تُستدعى قبل النظر إلى السمات الحالية الموجودة في الكائن.
تُشتق أصناف النمط الجديد من الكائن على عكس أصناف النمط القديم الموجودة في الإصدار الثاني من بايثون التي لا تملك صنف قاعدة واضح.
ولن يكون الفرق بين النمط القديم والجديد شيء أساسي لاختيار دالة بين  __getattr__ و __getattribute__ أي أنه لا أهمية له في اختيار استخدامك.
المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن