Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

دالة البناء (__init__)

جزء من قسم Object Oriented Programming في رحلة Python على Coddy — الدرس 7 من 64.

تُعد الدالة __init__ دالة خاصة تعمل تلقائياً عند إنشاء كائن جديد. وهي تقوم بتهيئة سمات الكائن.

إليك مثال على فئة (class) تحتوي على دالة بناء (constructor):

class Dog:
    def __init__(self, name, breed):
        self.name = name
        self.breed = breed

تأخذ الطريقة __init__ معاملات وتعينها لسمات الكائن باستخدام self.

قم بإنشاء كائنات باستخدام المنشئ (constructor):

rex = Dog("Rex", "German Shepherd")
buddy = Dog("Buddy", "Golden Retriever")

عندما تستدعي Dog("Rex", "German Shepherd")، يقوم Python تلقائياً باستدعاء __init__ ويمرر الوسائط.

الوصول إلى السمات التي تم تعيينها بواسطة المنشئ (constructor):

print(rex.name)
print(rex.breed)
print(buddy.name)
print(buddy.breed)

المخرجات:

Rex
German Shepherd
Buddy
Golden Retriever

يمكنك أيضاً الحصول على منشئ (constructor) بقيم افتراضية:

class Cat:
    def __init__(self, name, age=1):
        self.name = name
        self.age = age

# إنشاء قطط
fluffy = Cat("Fluffy", 3)
whiskers = Cat("Whiskers")  # العمر الافتراضي هو 1

print(f"{fluffy.name} is {fluffy.age} years old")
print(f"{whiskers.name} is {whiskers.age} years old")

المخرجات:

Fluffy is 3 years old
Whiskers is 1 years old

نقطة رئيسية: تضمن طريقة __init__ إعداد كل كائن (object) بشكل صحيح ببياناته الأولية عند إنشائه. فهي تغنيك عن تعيين الخصائص (attributes) يدويًا بعد إنشاء الكائن.

challenge icon

التحدي

سهل

لقد تم تزويدك بملفات Python (book.py و driver.py) لتنفيذ نظام إدارة كتب. في هذا التحدي، ستقوم بتعريف فئة Book في ملف واحد ليتم استيرادها واستخدامها في ملف آخر.

مهمتك هي:

  • إكمال فئة Book في book.py باستخدام طريقة __init__ التي تقوم بتهيئة سمات title و author و pages
  • سيقوم ملف driver.py باستيراد واستخدام فئة Book الخاصة بك لإنشاء كائن كتاب لـ "Harry Potter" بواسطة "J.K. Rowling" مع 400 صفحة

اتبع تعليقات TODO المفصلة في book.py.

ورقة مرجعية

تُعد الدالة __init__ منشئًا (constructor) يتم تشغيله تلقائيًا عند إنشاء كائن جديد لتهيئة سماته:

class Dog:
    def __init__(self, name, breed):
        self.name = name
        self.breed = breed

قم بإنشاء الكائنات عن طريق استدعاء الفئة (class) مع تمرير الوسائط:

rex = Dog("Rex", "German Shepherd")
print(rex.name)  # Rex
print(rex.breed)  # German Shepherd

يمكن أن تحتوي المنشئات على قيم افتراضية للمعاملات (parameters):

class Cat:
    def __init__(self, name, age=1):
        self.name = name
        self.age = age

fluffy = Cat("Fluffy", 3)
whiskers = Cat("Whiskers")  # age defaults to 1

جرّب بنفسك

# TODO: استيراد فئة Book من ملف book.py
# استخدم هذا التنسيق: from book import Book

# TODO: إنشاء كائن كتاب باسم 'my_book' بالقيم التالية:
# - العنوان: "Harry Potter"
# - المؤلف: "J.K. Rowling"
# - الصفحات: 400
# مثال: my_book = Book("Title", "Author", pages)

# طباعة تفاصيل الكتاب
# TODO: تأكد من تعريف my_book بشكل صحيح قبل تشغيل هذا السطر
print(f"'{my_book.title}' by {my_book.author}, {my_book.pages} pages")
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming