اذهب إلى المحتوى

السؤال

نشر

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

Recommended Posts

  • 0
نشر

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...