العودة إلى الدورة

التغليف ومزخرفات الخصائص (`@property`)

برمجة Python: معسكر التدريب من الصفر إلى الاحتراف

التغليف والخصائص

يقيد التغليف (Encapsulation) الوصول المباشر لبعض مكونات الكائن (البيانات)، مما يمنع التعديل العرضي، ويجبر التعامل معها من خلال دوال متحكم بها (getters/setters).

الخصائص الخاصة (عرفاً)

لا تفرض Python خصوصية حقيقية، لكن عرفاً، الخصائص التي تبدأ بشرطة سفلية (_) تعتبر محمية/خاصة، مما يشير إلى أنه لا يجب الوصول إليها مباشرة.

python class Student: def init(self, name, score): self.name = name self._score = score # خاصية محمية

استخدام @property (Getters بأسلوب Python)

يسمح لك مزخرف @property بتعريف دالة يمكن الوصول إليها كخاصية. هذا يمكننا من استخدام خصائص محسوبة والتحكم في الوصول للبيانات دون تغيير كود الاستدعاء.

python class Circle: def init(self, radius): self._radius = radius

# دالة الجلب (getter)
@property
def radius(self):
    return self._radius

# خاصية محسوبة يتم الوصول إليها كأنها متغير مخزن
@property
def area(self):
    return 3.14159 * (self._radius ** 2)

c = Circle(5)

الوصول للمساحة كخاصية، وليس كدالة:

print(f"Circle Area: {c.area}")