الوراثة (Inheritance) في لغة البايثون

الوراثة (Inheritance) في لغة Python

هل سبق لك أن تساءلت كيف يمكن للبرامج أن تستفيد من صفات وسلوكيات برامج أخرى وتكييفها لتناسب احتياجاتها الفريدة؟ إن مفهوم الوراثة (Inheritance) في لغة البايثون يفتح أمامك أبوابًا جديدة للإبداع والتوسع في برمجتك.

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

موضوع الوراثة (Inheritance) في لغة البايثون يشمل مفاهيم مثل الكلاسات الأساسية والكلاسات المشتقة، حيث يتم تحديد الكلاس المشتق من الكلاس الأساسي. ويمكنك الوصول إلى السمات والوظائف الموروثة وتعديلها لتناسب احتياجاتك الفريدة.

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

الوراثة (Inheritance) في لغة البايثون

في لغة البايثون، الوراثة هي مفهوم أساسي يسمح للكائنات (Objects) بتمتّع بالخصائص والسلوكيات من كائن آخر يُعرف باسم الكائن الأساسي أو الكائن الأم (Base Object). يُعتبر المفهوم التراكيب الهرمية (Hierarchical Structures) من أهم استخدامات الوراثة في البايثون.

عند إنشاء كائن جديد، يُمكننا تعريفه ككائن مشتق من كائن آخر. يُطلق على الكائن الأساسي اسم “الكلاس الأم” (Base Class) أو “الكلاس الأساسي” (Parent Class)، بينما يُطلق على الكائن المشتق اسم “الكلاس المشتق” (Derived Class) أو “الكلاس الفرعي” (Child Class).

عندما يرث الكلاس المشتق من الكلاس الأم، يكتسب الكلاس المشتق جميع الخصائص والوظائف (Method) الموجودة في الكلاس الأم، بالإضافة إلى إمكانية تعريف خصائص ووظائف إضافية خاصة به.

تتيح الوراثة في البايثون إمكانية إعادة استخدام الكود وتوسيعه بكفاءة. يمكننا تعريف عدة كلاسات مشتقة من نفس الكلاس الأم، وكل كلاس مشتق يمكنه تعديل السلوك والسمات الوراثية وتعريف سمات وسلوكيات إضافية.

لتعريف كلاس مشتق في البايثون، نستخدم الكلمة المفتاحية “class” مع اسم الكلاس المشتق، ثم نحدد اسم الكلاس الأم بين قوسين. يتم تعريف السمات والوظائف الخاصة بالكلاس المشتق بشكل عادي بداخل كتلة الكود.

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

الصيغة العامة للوراثة (Inheritance) في لغة البايثون

في لغة البايثون، يتم تحقيق الوراثة عن طريق تعريف كلاس مشتق (Derived Class) باستخدام كلمة المفتاحية class، وتحديد الكلاس الأساسي (Base Class) بين قوسين. الصيغة العامة لتعريف الوراثة في البايثون هي كالتالي:

class DerivedClass(BaseClass):
    # تعريف السمات والوظائف الإضافية للكلاس المشتق هنا

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

على سبيل المثال، إذا كان لدينا كلاس الأساسي يُسمى Animal يحتوي على سمتين name و age، ووظيفة eat()، يمكننا تعريف كلاس مشتق يُسمى Dog كما يلي:

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

    def eat(self):
        print("أنا أتناول الطعام.")

class Dog(Animal):
    def bark(self):
        print("الكلب ينبح.")

في هذا المثال، يتم توريث سمات name و age ووظيفة eat() من الكلاس الأساسي Animal إلى الكلاس المشتق Dog. بالإضافة إلى ذلك، يتم تعريف وظيفة إضافية bark() في الكلاس Dog.

هكذا، يمكننا إنشاء كائنات من الكلاس Dog التي ترث السمات والوظائف من الكلاس Animal وتحتوي على الوظيفة الإضافية bark():

dog = Dog("بوبي", 3)
print(dog.name)  # الإخراج: بوبي
print(dog.age)   # الإخراج: 3
dog.eat()        # الإخراج: أنا أتناول الطعام.
dog.bark()       # الإخراج: الكلب ينبح.

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

مثال توضيحي يطبق مفهوم الوراثة

هذا المثال هو مثال توضيحي يستخدم مفهوم الوراثة في لغة البايثون:

class Vehicle:
    def __init__(self, brand, year):
        self.brand = brand
        self.year = year

    def start(self):
        print(f"The {self.brand} vehicle has started.")

    def stop(self):
        print(f"The {self.brand} vehicle has stopped.")


class Car(Vehicle):
    def __init__(self, brand, year, color):
        super().__init__(brand, year)
        self.color = color

    def honk(self):
        print(f"The {self.brand} car is honking.")


class Motorcycle(Vehicle):
    def __init__(self, brand, year, engine_size):
        super().__init__(brand, year)
        self.engine_size = engine_size

    def wheelie(self):
        print(f"The {self.brand} motorcycle is doing a wheelie.")


# إنشاء كائنات من الكلاسات المشتقة
car = Car("Toyota", 2022, "Red")
motorcycle = Motorcycle("Harley Davidson", 2021, "1000cc")

# استخدام السمات والوظائف الموروثة
print(car.brand)           # الإخراج: Toyota
print(motorcycle.year)     # الإخراج: 2021
car.start()                # الإخراج: The Toyota vehicle has started.
motorcycle.stop()          # الإخراج: The Harley Davidson vehicle has stopped.

# استخدام السمات والوظائف الخاصة بكلاس السيارة
print(car.color)           # الإخراج: Red
car.honk()                 # الإخراج: The Toyota car is honking.

# استخدام السمات والوظائف الخاصة بكلاس الدراجة النارية
print(motorcycle.engine_size)  # الإخراج: 1000cc
motorcycle.wheelie()           # الإخراج: The Harley Davidson motorcycle is doing a wheelie.

في هذا المثال، يتم تعريف الكلاس الأساسي Vehicle الذي يحتوي على سمات brand و year ووظائف start() و stop().

ثم يتم تعريف الكلاس المشتق Car و Motorcycle، حيث يتم استدعاء دالة super() لتهيئة السمات الموروثة من الكلاس الأساسي Vehicle في الكلاس المشتق.

يتم تعريف وظيفة إضافية honk() في الكلاس Car ووظيفة إضافية wheelie() في الكلاس Motorcycle.

بعد ذلك، يتم إنشاء كائنات car و motorcycle من الكلاسات المشتقة، ويتم استخدام السمات والوظائف الموروثة من الكلاس الأساسي، بالإضافة إلى استخدام السمات والوظائف الخاصة بكلاسات السيارة والدراجة النارية.

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

هذا والسلام عليكم ورحمة الله وبركاته…

( لا تنسا مشاركة الموضوع ليستفيد غيرك )

Exit mobile version