46- كورس لغة بايثون Python – Python Inner Classes

فهم الفئات الداخلية في بايثون

تعتبر الفئات الداخلية في بايثون واحدة من الميزات المتقدمة التي يمكن استخدامها لتنظيم الكود بشكل أفضل وتوفير مستويات إضافية من التخصيص. الفئة الداخلية هي ببساطة فئة يتم تعريفها داخل فئة أخرى. يمكن استخدام الفئات الداخلية عندما تكون هناك حاجة لتنظيم الكود بطريقة تجعل الفئة الداخلية غير منطقية أو غير ضرورية خارج نطاق الفئة الخارجية. هذا يسمح لك بتجميع الوظائف ذات الصلة معًا والحفاظ على الكود أكثر تنظيمًا.

تستخدم الفئات الداخلية عادةً عندما تكون الفئة الداخلية مرتبطة بشكل وثيق بالفئة الخارجية، حيث يمكن للفئة الداخلية الوصول إلى أعضاء الفئة الخارجية، بما في ذلك المتغيرات والأساليب الخاصة. هذا يعني أنه يمكن للفئات الداخلية الاستفادة من الكائنات والبيانات الموجودة في الفئة الخارجية دون الحاجة إلى تمريرها بشكل صريح. على الرغم من أن الفئات الداخلية ليست شائعة جدًا في البرمجة اليومية، إلا أنها توفر حلاً أنيقًا في بعض الحالات الخاصة.

أمثلة على الفئات الداخلية في بايثون

للتوضيح، دعونا نلقي نظرة على مثال بسيط يوضح كيفية استخدام الفئات الداخلية في بايثون. افترض أن لدينا فئة تمثل كتابًا، ونريد أن نضيف فئة تمثل صفحات الكتاب كفئة داخلية.

class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author
        self.pages = []
        
    class Page:
        def __init__(self, content):
            self.content = content

    def add_page(self, content):
        page = self.Page(content)
        self.pages.append(page)

my_book = Book("Learning Python", "Mark Lutz")
my_book.add_page("Page 1 content")
my_book.add_page("Page 2 content")

for page in my_book.pages:
    print(page.content)

في هذا المثال، لدينا فئة `Book` التي تحتوي على فئة داخلية `Page`. يمكننا إضافة صفحات إلى الكتاب باستخدام الأسلوب `add_page`، حيث نقوم بإنشاء كائن من الفئة `Page` وإضافته إلى قائمة الصفحات. هنا، الفئة `Page` لا تحتاج إلى أن تكون معروفة خارج نطاق الفئة `Book`، مما يجعل تنظيم الكود أكثر نظافة ووضوحًا.

استخدام الفئات الداخلية يمكن أن يكون مفيدًا في تطبيقات متعددة، مثل تصميم واجهات المستخدم، حيث يمكن تعريف عناصر واجهة المستخدم كفئات داخلية ضمن فئة واجهة المستخدم الرئيسية، أو عند التعامل مع الأوضاع المختلفة لنظام معين حيث يمكن تمثيل كل وضع كفئة داخلية.