التغليف والخصائص
يقيد التغليف (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}")