دالة البناء (__init__)
جزء من قسم البرمجة كائنية التوجه في رحلة Python على Coddy. الدرس 7 من 64.
إن طريقة __init__ هي method خاصة تعمل تلقائيًا عند إنشاء object جديد. وهي تهيّئ attributes الخاصة بـ object.
إليك مثالًا على فئة تحتوي على مُنشئ:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breedتأخذ __init__ method parameters وتُسنِدها إلى attributes النسخة باستخدام self.
أنشئ كائنات باستخدام المُنشئ:
rex = Dog("Rex", "German Shepherd")
buddy = Dog("Buddy", "Golden Retriever")عند استدعاء Dog("Rex", "German Shepherd")، تستدعي Python تلقائيًا __init__ وتمرر الوسائط.
الوصول إلى السمات التي عيّنها المُنشئ:
print(rex.name)
print(rex.breed)
print(buddy.name)
print(buddy.breed)المخرجات:
Rex
German Shepherd
Buddy
Golden Retrieverيمكنك أيضًا أن يكون لديك مُنشئ بقيم افتراضية:
class Cat:
def __init__(self, name, age=1):
self.name = name
self.age = age
# إنشاء قطط
fluffy = Cat("Fluffy", 3)
whiskers = Cat("Whiskers") # age يُعيَّن افتراضيًا إلى 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__ method إعداد كل object بشكل properly باستخدام بياناته الأولية عند إنشائه. وتجنّبك الحاجة إلى ضبط attributes يدويًا بعد إنشاء object.
التحدي
سهللديك ملفات Python (book.py وdriver.py) لتنفيذ نظام لإدارة الكتب. في هذا التحدي، ستعرّف فئة Book في ملف واحد، وسيتم استيرادها واستخدامها في ملف آخر.
مهمتك هي:
- إكمال فئة
Bookفيbook.pyباستخدام طريقة__init__التي تهيّئ سماتtitleوauthorوpages - سيقوم ملف
driver.pyباستيراد فئةBookواستخدامها لإنشاء كائن كتاب بعنوان"Harry Potter" by "J.K. Rowling" with 400 pages
اتبع تعليقات TODO التفصيلية في book.py.
جرّب بنفسك
# TODO: استورد الفئة Book من book.py
# استخدم هذا التنسيق: from book import Book
# TODO: أنشئ كائنًا من Book باسم 'my_book' بالقيم التالية:
# - title: "Harry Potter"
# - author: "J.K. Rowling"
# - pages: 400
# مثال: my_book = Book("Title", "Author", pages)
# اطبع تفاصيل الكتاب
# TODO: تأكد من أن my_book معرّف بشكل صحيح قبل تشغيل هذا السطر
print(f"'{my_book.title}' by {my_book.author}, {my_book.pages} pages")يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجه
1أساسيات OOP
الملفات الخارجيةمقدمة في OOPClasses مقابل Objectsمعامل selfMethodsAttributesدالة البناء (__init__)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسيةدالة ()superإعادة تعريف الدوال (Method Overriding)الوراثة المتعددةترتيب استدعاء الدوال (Method Resolution Order)مراجعة - هيكلية الموظفين5تعدد الأشكال
مراجعة إعادة تعريف الدوالمفهوم Duck Typingالأصناف والدوال المجردةتصميم الواجهاتملخص - حاسبة الأشكالتدرّب بنفسك: مترجم Python عبر الإنترنت