پایتون

روز ۳۱ آموزش پایتون: ارث‌ بری (Inheritance)

یکی از مفاهیم کلیدی در برنامه‌ نویسی شیءگرا، ارث‌بری یا Inheritance است. ارث‌بری به ما اجازه می‌دهد یک کلاس جدید از کلاس موجود ایجاد کنیم و ویژگی‌ها و متدهای کلاس والد را به ارث ببریم. این قابلیت به ما کمک می‌کند کدها را مجدد ننویسیم و ساختار برنامه را منظم و قابل توسعه نگه داریم. با استفاده از ارث‌بری، می‌توانیم کلاس‌های تخصصی‌تر بسازیم که هم از ویژگی‌ها و متدهای کلاس پایه استفاده کنند و هم رفتارهای جدید خود را اضافه کنند. این مفهوم پایه‌ای برای پروژه‌های بزرگ و حرفه‌ای است و در طراحی نرم‌افزارهای پیچیده کاربرد فراوان دارد.

چرا ارث‌بری مهم است؟

استفاده از ارث‌بری باعث می‌شود از تکرار کد جلوگیری کنیم و اصول DRY (Don’t Repeat Yourself) را رعایت کنیم. وقتی یک کلاس پایه می‌تواند ویژگی‌ها و متدهای عمومی را مدیریت کند، کلاس‌های فرزند می‌توانند فقط جزئیات خاص خود را اضافه کنند. علاوه بر این، ارث‌بری امکان ایجاد سلسله مراتب کلاس‌ها، تعریف رابط‌های مشترک و مدیریت بهتر داده‌ها را فراهم می‌کند. بدون ارث‌بری، برنامه‌های شیءگرا به سرعت پیچیده و نامنظم می‌شوند و نگهداری آن‌ها دشوار خواهد بود.

تعریف کلاس پایه و کلاس فرزند

برای شروع، یک کلاس پایه تعریف می‌کنیم که ویژگی‌ها و متدهای عمومی را در خود نگه دارد. سپس یک کلاس فرزند ایجاد می‌کنیم که این ویژگی‌ها و متدها را به ارث می‌برد و رفتار جدید اضافه می‌کند. در پایتون، کلاس فرزند با قراردادن نام کلاس والد داخل پرانتز مشخص می‌شود.

نمونه کد تعریف کلاس پایه و کلاس فرزند:

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

    def make_sound(self):
        print(f"{self.name} یک صدای عمومی از نوع {self.species} ایجاد کرد.")

# کلاس فرزند
class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name, "سگ")
        self.breed = breed

    def make_sound(self):
        print(f"{self.name} پارس کرد!")

# استفاده از کلاس‌ها
animal1 = Animal("حیوان ناشناس", "گونه نامشخص")
animal1.make_sound()

dog1 = Dog("سگ کوچولو", "لابرادور")
dog1.make_sound()

در این مثال، کلاس Dog ویژگی‌ها و متدهای کلاس Animal را به ارث می‌برد و متد make_sound را بازنویسی (override) می‌کند تا صدای مخصوص سگ را تولید کند. همچنین با استفاده از super()، سازنده کلاس والد فراخوانی می‌شود و ویژگی‌های پایه را مقداردهی می‌کنیم.

ویژگی‌های کلاس فرزند

کلاس فرزند می‌تواند ویژگی‌ها و متدهای جدیدی اضافه کند که مختص همان کلاس باشد. این انعطاف‌پذیری باعث می‌شود کلاس‌های فرزند بتوانند رفتارهای خاص خود را داشته باشند و در عین حال از کلاس والد بهره‌مند شوند. این ساختار برای طراحی سیستم‌های واقعی مثل مدیریت کاربران، محصولات، یا موجودات در بازی‌ها بسیار کاربرد دارد.

نمونه کد اضافه کردن ویژگی خاص به کلاس فرزند:

class Cat(Animal):
    def __init__(self, name, color):
        super().__init__(name, "گربه")
        self.color = color

    def make_sound(self):
        print(f"{self.name} میو کرد!")

cat1 = Cat("گربه زیبا", "خاکستری")
cat1.make_sound()
print(f"رنگ {cat1.name}: {cat1.color}")

در این مثال، کلاس Cat ویژگی color را اضافه کرده و متد make_sound خود را تعریف می‌کند. این نشان می‌دهد کلاس فرزند می‌تواند هم از کلاس والد بهره ببرد و هم ویژگی‌ها و رفتارهای خاص خود را داشته باشد.

جمع‌بندی ارث‌بری در پایتون

در این درس یاد گرفتیم که چطور یک کلاس پایه تعریف کنیم، یک کلاس فرزند بسازیم، ویژگی‌ها و متدهای کلاس والد را به ارث ببریم و متدها را بازنویسی کنیم. ارث‌بری باعث می‌شود برنامه‌ها ساختاریافته‌تر، قابل توسعه و قابل نگهداری باشند و امکان طراحی سیستم‌های پیچیده با سلسله مراتب منطقی فراهم شود. تمرین پیشنهادی این است که کلاس‌های مختلفی بسازیم، متدهای کلاس والد را در کلاس فرزند بازنویسی کنیم و ویژگی‌های جدید اضافه کنیم تا تسلط کامل روی Inheritance پیدا کنیم. این مهارت پایه اصلی برنامه‌نویسی شیءگرا در پایتون است و در پروژه‌های واقعی کاربرد فراوان دارد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هشت + پنج =

دکمه بازگشت به بالا