hasattr() هل توجد خاصية
آخر تحديث: 2026-09-22
hasattr() هل توجد خاصية
hasattr(obj, name) تتحقق مما إذا كان للكائن obj خاصية باسم name.
| التصنيف | الدوال المدمجة |
|---|---|
| النوع | دالة مدمجة |
| إصدار بايثون | all |
📝 الصياغة
hasattr(object, name)
⚙️ المعاملات
| object مطلوب | The object to check for the attribute (any object). |
|---|---|
| name مطلوب | Attribute name as a string, e.g. 'attr'. |
القيمة المُعادة:A bool: True if the object has the named attribute, otherwise False.
💥 الاستثناءات
TypeError— Raised when name is not a string.
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
True
False
🏷️ دوال مدمجة ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
❓ أسئلة شائعة
Qماذا يعني أن تُرجع hasattr(obj, 'x') القيمة True؟
Aيعني أن obj يملك خاصية اسمها x (بما فيها الموروثة من صنف أب)، لكنه لا يضمن أن قيمتها ليست None ولا أنها قابلة للاستدعاء.
Qما الفرق بين hasattr و getattr؟
Ahasattr يكتشف «الوجود» فقط ويُعيد قيمة منطقية؛ بينما getattr «يستخرج» القيمة ويُثير AttributeError إذا لم توجد (إلا إذا مُرر default).
Qهل يجب كتابة اسم الخاصية حرفيًا؟
Aلا — الاسم في hasattr(obj, attr_name) يمكن أن يكون متغيرًا، مناسبًا للفحص الديناميكي لقدرات الكائن.
Qهل يمكن لـ hasattr فحص أسلوب؟
Aنعم، الأسلوب أيضًا خاصية، لذا hasattr(obj, 'method_name') يُرجع True؛ ويمكن الاقتران مع callable() للتأكد من قابلية الاستدعاء.