🐍 الكلاسات (Classes) في بايثون: البوابة إلى البرمجة الكائنية
مرحباً بك في عالم البرمجة الكائنية التوجه (Object-Oriented Programming - OOP)! في هذا الدرس، سنتعلم أحد أهم المفاهيم في البرمجة الحديثة وهو الكلاسات (Classes). إذا كنت تفكر في الكود كمجموعة من الكائنات التي تتفاعل مع بعضها، فأنت على الطريق الصحيح! 🚀
🤔 ما هي الكلاسات (Classes)؟
ببساطة شديدة، الكلاس (Class) هو مثل "النموذج" أو "القالب" الذي نصنع منه كائنات (Objects). تخيل أنك تريد بناء عشرات المنازل متشابهة التصميم. بدلاً من رسم تصميم كل منزل على حدة، ترسم تصميمًا واحدًا (الكلاس) ثم تبني منه العديد من المنازل (الكائنات).
- الكلاس (Class): هو التصميم أو المواصفات. (مثل: تصميم سيارة)
- الكائن (Object): هو النسخة الفعلية المُنشأة من ذلك التصميم. (مثل: السيارة الحمراء التي تملكها)
# الكلاس هو التصميم
class Car:
pass
# الكائنات هي النسخ الفعلية المنشأة
my_car = Car()
your_car = Car()
print(type(my_car)) # الناتج: <class '__main__.Car'>
print(type(your_car)) # الناتج: <class '__main__.Car'>
شرح المثال: أنشأنا قالباً (كلاس) اسمه Car. ثم استخدمنا هذا القالب لإنشاء كائنين مستقلين هما my_car و your_car.
📝 كيفية تعريف كلاس (Class) في بايثون
لتعريف كلاس جديد، نستخدم الكلمة المفتاحية class يليها اسم الكلاس (يبدأ بحرف كبير حسب الاتفاقية).
# تعريف كلاس بسيط
class Student:
pass
# إنشاء كائن (نسخة) من الكلاس
student1 = Student()
student2 = Student()
print(student1) # الناتج: <__main__.Student object at 0x000001...> (عنوان في الذاكرة)
print(student2) # الناتج: عنوان مختلف، مما يثبت أنه كائن منفصل
🏗️ المُنشئ (Constructor) والسمات (Attributes)
الكلاس الفارغ غير مفيد. نريد إضافة خصائص للكائنات. هنا يأتي دور المُنشئ __init__.
- المُنشئ
__init__: دالة خاصة تُنفَّذ تلقائياً عند إنشاء كائن جديد من الكلاس. نستخدمها لتهيئة السمات الأولية للكائن. - السمات (Attributes): هي المتغيرات التي تخزن البيانات الخاصة بكل كائن.
class Student:
# المُنشئ (Constructor)
def __init__(self, name, grade):
# تهيئة السمات (Attributes)
self.name = name # سمة name للكائن
self.grade = grade # سمة grade للكائن
# عند إنشاء الكائن، نمرر القيم للمُنشئ
student1 = Student("أحمد", 95)
student2 = Student("فاطمة", 88)
# الوصول إلى السمات باستخدام النقطة (.)
print(student1.name) # الناتج: أحمد
print(student2.grade) # الناتج: 88
شرح المثال: المُعامل self يشير إلى النسخة الحالية من الكائن. عند إنشاء student1، يصبح self هو student1 نفسه. لذا، self.name = "أحمد" تعني: عيّن سمة name للكائن student1 لتكون "أحمد".
🎯 الدوال (Methods) داخل الكلاس
الدوال (Methods) هي الإجراءات أو السلوكيات التي يمكن للكائن القيام بها. هي مثل الدوال العادية، ولكنها تُعرَّف داخل الكلاس ويجب أن يكون لها المعامل self كأول معامل.
class Student:
def __init__(self, name, grade):
self.name = name
self.grade = grade
# دالة (Method) لعرض معلومات الطالب
def display_info(self):
print(f"الاسم: {self.name}, الدرجة: {self.grade}")
# دالة (Method) لتحديث الدرجة
def update_grade(self, new_grade):
self.grade = new_grade
print(f"تم تحديث درجة {self.name} إلى {self.grade}")
# الاستخدام
student1 = Student("خالد", 70)
student1.display_info() # استدعاء الدالة: الناتج: الاسم: خالد, الدرجة: 70
student1.update_grade(85) # استدعاء دالة التحديث
student1.display_info() # الناتج: الاسم: خالد, الدرجة: 85
شرح المثال: الدالة display_info تطبع سمات الكائن. لاحظ كيف استخدمنا self.name و self.grade للوصول إلى بيانات هذا الكائن بالتحديد.
💡 ملخص سريع
- الكلاس (Class): قالب أو تصميم لإنشاء كائنات.
- الكائن (Object): نسخة فعلية ملموسة منشأة من الكلاس.
- السمات (Attributes): المتغيرات التي تخزن بيانات الكائن (مثل
name). - الدوال (Methods): الوظائف التي تحدد سلوك الكائن (مثل
display_info()). - المُنشئ
__init__: دالة خاصة تهيئ الكائن عند إنشائه.
لقد أخذت خطوتك الأولى نحو إتقان البرمجة الكائنية، وهي مهارة أساسية ستستخدمها في جميع مشاريعك المستقبلية! 🎉
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال