getattr() الحصول على خاصية كائن
آخر تحديث: 2026-09-22
getattr() الحصول على خاصية كائن
getattr(obj, name[, default]) تُرجع الخاصية name للكائن obj؛ إذا لم تكن موجودة تُرجع default (وإلا ترفع AttributeError).
| التصنيف | الدوال المدمجة |
|---|---|
| النوع | دالة مدمجة |
| إصدار بايثون | all |
📝 الصياغة
getattr(object, name[, default])
⚙️ المعاملات
| object مطلوب | The object to read the attribute from. |
|---|---|
| name مطلوب | The attribute name as a string. |
| default اختياري | Value returned if the attribute is missing.(القيمة الافتراضية:None) |
القيمة المُعادة:The attribute value, or default if the attribute is missing.
💥 الاستثناءات
AttributeError— Raised when the attribute is missing and no default is given.TypeError— Raised when name is not a string.
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
10
default
🏷️ دوال مدمجة ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
❓ أسئلة شائعة
Qما الفرق بين getattr(obj, 'x', 'default') و obj.x؟
Aعند وجود الخاصية تكون النتيجة نفسها؛ وعند عدم وجودها تُرجع getattr 'default' بينما obj.x يُثير AttributeError مباشرة.
Qفي أي سيناريو يجب استخدام getattr؟
Aعندما يُحسب اسم الخاصية ديناميكيًا (من متغير أو إعدادات أو وصل سلاسل) يكون getattr(obj, attr_name) غير قابل للاستبدال بصيغة النقطة.
Qكيف يعملان getattr و hasattr معًا؟
Aيمكن الفحص بـ hasattr(obj, 'x') ثم الحصول بـ getattr(obj, 'x')؛ وبصورة أبلغ، getattr(obj, 'x', None) يحل في خطوة واحدة.
Qماذا يحدث إذا حذفت default ولم توجد الخاصية؟
Aيُثار AttributeError؛ وإذا لم تكن name سلسلة نصية يُثار TypeError.