setattr() تعيين خاصية
آخر تحديث: 2026-09-22
setattr() تعيين خاصية
يعيّن setattr(obj, name, value) الخاصية name في obj إلى value؛ وهو مكافئ لـ obj.name = value.
| التصنيف | الدوال المدمجة |
|---|---|
| النوع | دالة مدمجة |
| إصدار بايثون | all |
📝 الصياغة
setattr(object, name, value)
⚙️ المعاملات
| object مطلوب | The object whose attribute is set. |
|---|---|
| name مطلوب | The attribute name (string). |
| value مطلوب | The value to assign. |
القيمة المُعادة:None; the attribute is set in place.
💥 الاستثناءات
AttributeError— Raised when the attribute cannot be set (read-only or restricted by __slots__).
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
100
🏷️ دوال مدمجة ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
❓ أسئلة شائعة
Qهل يختلف setattr(obj, 'x', 100) عن obj.x = 100؟
Aمكافئان وظيفيًا. ميزة setattr أن اسم الخاصية يمكن أن يكون متغيرًا أو سلسلة محسوبة ديناميكيًا، مناسبًا للبرمجة الانعكاسية.
Qما الاستخدامات النموذجية لـ setattr؟
Aتحميل الإعدادات/تعيين الكائنات: for k, v in config.items(): setattr(obj, k, v)، بتحويل قاموس إلى خصائص كائن دفعة واحدة.
Qماذا يحدث عند استهداف خاصية للقراءة فقط؟
Aيُثار AttributeError: can't set attribute، مثلًا عند الإسناد إلى property عرّفت getter فقط.
Qهل يمكن لصنف ذي __slots__ استقبال setattr لأي خاصية؟
Aلا — فقط أسماء الخصائص المعلنة في __slots__ يمكن تعيينها؛ تعيين أي اسم آخر يُثير AttributeError.