property() واصف خاصية

آخر تحديث: 2026-09-22

property() واصف خاصية

يغلّف property(fget, fset, fdel, doc) الدوال في كائن يمكن الوصول إليه كخاصية؛ ويمكن أيضًا استخدام المزيّن @property.

التصنيفالدوال المدمجة
النوعدالة مدمجة
إصدار بايثونall

📝 الصياغة

property(fget[, fset[, fdel[, doc]]])

⚙️ المعاملات

fget اختياريFunction for getting the attribute value (getter).(القيمة الافتراضية:None)
fset اختياريFunction for setting the attribute value (setter).(القيمة الافتراضية:None)
fdel اختياريFunction for deleting the attribute (deleter).(القيمة الافتراضية:None)
doc اختياريDocstring for the property.(القيمة الافتراضية:None)

القيمة المُعادة:A property object, a data descriptor accessed like a normal attribute.

▶ مثال

عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:

المخرجات:

10
المزيد من الحالات قادم قريباً — تابعونا.

❓ أسئلة شائعة

Qما فائدة property؟
Aيحوّل أسلوبًا إلى وصول خاصية: obj.x يُشغّل منطق getter بلا أقواس، ويمكن التحقق عند الإسناد (عبر setter)، محققًا «الخصائص المحسوبة» والتغليف.
Qكيف يعملان @property و @x.setter معًا؟
A@property يُعرّف منطق القراءة و@x.setter تحقق الإسناد، مثل c.x = 10 يمر عبر setter؛ إذا عُرف @property فقط دون setter، فالإسناد يُثير AttributeError: can't set attribute.
Qما الفرق بين property والأسلوب العادي؟
Aأسلوب الوصول يختلف (obj.x بدل obj.x())، ويمكن لـ property اعتراض العمليات الثلاث: القراءة والإسناد والحذف — مناسب لتغليف الحقول الداخلية والتحقق منها.
Qهل تخزن الخاصية المحسوبة النتيجة مؤقتًا؟
Aلا، الوصول إلى obj.x يعيد تنفيذ getter في كل مرة؛ لتخزين النتيجة مؤقتًا عليك تنفيذها بنفسك (مثل functools.cached_property).
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%