نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر

نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
PY

منهج Python

دليل مرجعي شامل

كل اللغات
مدرسة البرمجة/منهج Python/الكبسلة وإخفاء البيانات (Encapsulation & Private Attributes)

الكبسلة وإخفاء البيانات (Encapsulation & Private Attributes)

encapsulation pythonالكبسلة pythonprivate attributes pythonproperty python

جدول مرجعي سريع

1

مستويات الوصول في Python

المستوىالصيغةمثالالوصول من الخارج
Publicnameself.nameمسموح
Protected_nameself._nameمسموح (غير مُشجَّع)
Private__nameself.__nameغير مباشر (_Class__name)

الشرح

## الكبسلة (Encapsulation)

إخفاء التفاصيل الداخلية للكائن وحماية البيانات من الوصول المباشر.

### مستويات الوصول في Python: - **public:** `self.name` - الكل يصل - **protected:** `self._name` - اتفاقية "للداخل فقط" (يمكن الوصول لكن غير مُشجَّع) - **private:** `self.__name` - Python تُغيّر اسمها (name mangling)

### Getters و Setters: ```python class Person: def __init__(self, age): self.__age = age # private @property def age(self): # getter return self.__age @age.setter def age(self, value): # setter if value > 0: self.__age = value ```

الصياغة (Syntax)

syntax
1class BankAccount:
2 def __init__(self, owner, balance):
3 self.owner = owner # public
4 self.__balance = balance # private
5
6 @property
7 def balance(self): # getter
8 return self.__balance
9
10 def deposit(self, amount):
11 if amount > 0:
12 self.__balance += amount
13 else:
14 raise ValueError("المبلغ يجب أن يكون موجباً")
15
16 def withdraw(self, amount):
17 if 0 < amount <= self.__balance:
18 self.__balance -= amount
19 else:
20 raise ValueError("مبلغ غير صالح أو رصيد غير كافٍ")

أمثلة عملية

مثال 1: Encapsulation كاملة

Encapsulation كاملة
1class Temperature:
2 def __init__(self, celsius=0):
3 self.__celsius = celsius
4
5 @property
6 def celsius(self):
7 return self.__celsius
8
9 @celsius.setter
10 def celsius(self, value):
11 if value < -273.15:
12 raise ValueError("درجة حرارة أقل من الصفر المطلق!")
13 self.__celsius = value
14
15 @property
16 def fahrenheit(self):
17 return self.__celsius * 9/5 + 32
18
19 @property
20 def kelvin(self):
21 return self.__celsius + 273.15
22
23temp = Temperature(25)
24print(f"سيلسيوس: {temp.celsius}°C")
25print(f"فهرنهايت: {temp.fahrenheit}°F")
26print(f"كلفن: {temp.kelvin}K")
27
28temp.celsius = 100
29print(f"بعد التغيير: {temp.celsius}°C = {temp.fahrenheit}°F")

نصائح احترافية

  • —**نصائح الكبسلة:**
  • —استخدم `@property` بدلاً من getter/setter methods التقليدية
  • —`__name` (double underscore) يُطبق name mangling: `_ClassName__name`
  • —الـ `_name` (single) مجرد اتفاق "هذا داخلي" لكن Python لا تُطبّقه
  • —الكبسلة تحمي البيانات وتسمح بتحقق صحة القيم قبل التعيين

الدرس السابق

تعدد الأشكال (Polymorphism)

نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر