أهلاً بك! خاصية Classes and Objects (الصفوف والكائنات) هي من أهم المفاهيم في البرمجة الشيئية (Object-Oriented Programming - OOP) في بايثون، وهي أساس بناء برامج قوية ومرنة وقابلة لإعادة الاستخدام. سأشرح لك هذا المفهوم بالتفصيل:

1. الكلاس (Class):

  • تعريف: الكلاس هو بمثابة "قالب" أو "مخطط" لإنشاء كائنات. يحدد الكلاس الخصائص (Attributes) التي ستمتلكها الكائنات التابعة له، والسلوكيات (Methods) التي ستكون قادرة على القيام بها.
  • مثال: تخيل أنك تريد إنشاء برنامج لإدارة معلومات الطلاب. يمكنك إنشاء كلاس باسم "Student" (طالب). هذا الكلاس سيحدد أن كل طالب لديه:
    • خصائص: اسم (name)، عمر (age)، رقم جامعي (student_id)، تخصص (major).
    • سلوكيات: تسجيل في مقرر (enroll_in_course)، عرض معلومات (display_info).
  • بناء الكلاس في بايثون: يتم استخدام الكلمة المفتاحية class لتعريف كلاس في بايثون. مثال:
Python
class Student:
def __init__(self, name, age, student_id, major):
self.name = name
self.age = age
self.student_id = student_id
self.major = major

def enroll_in_course(self, course_name):
print(f"{self.name} enrolled in {course_name}")

def display_info(self):
print(f"Name: {self.name}, Age: {self.age}, ID: {self.student_id}, Major: {self.major}")

2. الكائن (Object):

  • تعريف: الكائن هو "نسخة" فعلية من الكلاس. عندما تقوم بإنشاء كائن من كلاس، فأنت تقوم بتخصيص قيم فعلية للخصائص التي تم تعريفها في الكلاس.
  • مثال: بناءً على الكلاس "Student" الذي أنشأناه، يمكنك إنشاء كائن لطالب اسمه "أحمد" عمره 20 سنة ورقمه الجامعي 12345 وتخصصه هندسة. هذا الكائن سيحتوي على القيم المحددة له، وسيكون قادراً على استخدام السلوكيات التي تم تعريفها في الكلاس.
  • إنشاء كائن في بايثون: يتم إنشاء كائن عن طريق استدعاء الكلاس كأنه دالة. مثال:
Python
student1 = Student("فراس", 20, 12345, "لحام")

3. العلاقة بين الكلاس والكائن:

الكلاس هو المخطط، والكائن هو المبنى الذي تم إنشاؤه بناءً على هذا المخطط. يمكنك إنشاء العديد من الكائنات المختلفة من نفس الكلاس، وكل كائن سيكون له قيمه الخاصة.

4. self في بايثون:

في تعريف الكلاس، نستخدم الكلمة self للإشارة إلى الكائن الحالي. عندما يتم استدعاء سلوك (Method) على كائن، يتم تمرير الكائن نفسه كأول معامل إلى هذا السلوك، ويتم تمثيله بواسطة self.

5. __init__ في بايثون:

الدالة __init__ هي دالة خاصة تسمى "المنشئ" (Constructor). يتم استدعاؤها تلقائياً عند إنشاء كائن جديد من الكلاس. تُستخدم __init__ لتهيئة خصائص الكائن بقيم ابتدائية.

مثال كامل:

Python
class Student:
def __init__(self, name, age, student_id, major):
self.name = name
self.age = age
self.student_id = student_id
self.major = major

def enroll_in_course(self, course_name):
print(f"{self.name} enrolled in {course_name}")

def display_info(self):
print(f"Name: {self.name}, Age: {self.age}, ID: {self.student_id}, Major: {self.major}")

# إنشاء كائنات
student1 = Student("فراس", 20, 12345, "لحام")
student2 = Student("أية", 21, 67890, "طب")

# استخدام سلوكيات الكائنات
student1.display_info() # سيطبع معلومات أحمد
student1.enroll_in_course("مقدمة في البرمجة") # سيطبع أن أحمد سجل في المقرر

student2.display_info() # سيطبع معلومات فاطمة

فوائد استخدام Classes and Objects:

  • تنظيم الكود: يساعد على تنظيم الكود وجعله أكثر قابلية للقراءة والفهم.
  • إعادة الاستخدام: يمكنك إعادة استخدام الكلاس لإنشاء العديد من الكائنات المختلفة.
  • النمذجة: يمكنك نمذجة الكائنات الحقيقية في برنامجك.