پایگاه دانش کارجویا » ارث بری در پایتون | اصل ۱ شی گرایی

پایگاه دانش کارجویا

در پایگاه دانش کارجویا، اطلاعات خود را در زمینه های مختلف به روز کنید.

ارث بری در پایتون | اصل ۱ شی گرایی

فهرست مطالب

سلام به تمامی دوستان عزیزم ؛ توی این مقاله قراره به بررسی مفهوم مهم ارث بری در پایتون همراه با حل چندین مثال کاربردی بپردازیم .

اگر شما هم هنوز مقاله ی قبلی که مربوط به شی گرایی در پایتون بود رو مطالعه نکردین پیش از ادامه ی این مقاله ، مقاله ی قبل رو با دقت مطالعه کنین .

ارث بری در پایتون :

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

به کلاسی که از کلاس دیگر ارث می برد کلاس فرزند (مشتق شده) و به کلاسی که کلاس های دیگر از آن ارث می برند کلاس والد (parent) می گویند .

ارث بری در پایتون

نحوه ی دستور ارث بری در پایتون :

برای ارث بری در پایتون تنها کاری که لازم است انجام دهیم این است که نام کلاسی که قرار است از آن ارث بری کنیم را درون پرانتز کلاسی که می خواهد از آن کلاس ارث بری کند قرار دهیم .

مانند مثال رو به رو :

class X:

    pass   # class X body

class Y(X):

    pass   # class Y body

در ادامه به بررسی یک مثال کاربردی از ارث بری در پایتون می پردازیم تا کاربرد آن را به خوبی درک کنیم .

قبل از بررسی مثال بهتره که با متد __init__ که متد سازنده (constructor) در پایتون است آشنا شویم .

این متد از ضروری ترین متدها در برنامه نویسی شی گرایی است و تقریبا در هر برنامه ای که قرار است از مفهوم ارث بری استفاده شود از این متد نیز استفاده خواهد شد .

وظیفه ی این متد مقداردهی اولیه ی شی های ساخته شده از یک کلاس می باشد و بعد از ساخت یک شی از کلاس ، این متد اجرا خواهد شد و برای استفاده از آن نیازی به فراخوانی این متد نیست .

حالا که تا حدی با متد سازنده در پایتون آشنا شدیم بریم به بررسی یک مثال کاربردی از ارث بری در پایتون بپردازیم .

مثال : فرض کنید کلاسی به نام car داریم و از این کلاس قرار است که ماشین های مختلفی ویژگی هایی را به ارث ببرند .

کلاس Car شامل ویژگی هایی است که تمام ماشین ها از آن برخوردارند . برای مثال همه ی ماشین ها دارای رنگ ، سرعت ، مدل و … هستند که مقدار این ویژگی ها بسته به نوع ماشین متغیر است و خود ماشین ها نیز علاوه بر این ویژگی ها ، ویژگی های منحصر به فردی دارند که ماشین های دیگر ندارند . در این شرایط ماشین های مختلف می توانند به واسطه ی ویژگی های مشترکی که با ماشین های دیگر دارند از کلاس Car ارث بری کنند .

پس در ابتدا کلاس Car را با ویژگی های مذکور (سرعت ، مدل و رنگ) تعریف می کنیم .

class Car:

    def __init__(self, speed, model, color):

        self.speed = speed

        self.color = color

        self.model = model

همانطور که در مثل بالا مشاهده می کنید ، در قطعه کد بالا اولین آرگومان متد init را self قرار دادیم . self را می توان ظرفی در نظر گرفت که در آن متغیرهای مختلف هر کلاس را می توان ذخیره کرد . self به ما این کمک را می کند که متغیرهای مربوط به هر شی ای از کلاس را به صورت جداگانه مقداردهی کرده و وقتی از کلمه ی self قبل از متغیر مورد نظر استفاده می کنیم بدین معناست که متغیر همین کلاس مد نظر ماست .

 

در ادامه ی مثال خود چند کلاس (ماشین) دیگر تعریف کرده که هرکدام ویژگی های کلاس ماشین را دارند و از آن ارث می برند .

class Peugeot:

    def __init__(self, speed, model, color):

        self.speed = speed

        self.color = color

        self.model = model

    def option():

        print(“Peugeot has many options.”)

class Peugeot206 (Peugeot):

    def option ():

       print(“206 Peugeot has many options”)

p = Peugeot.option()

 

در این مثال دو کلاس داریم که هر کدام از این کلاس ها تابعی به نام option دارند . در این حالت می گوییم method overwriting رخ داده است . در صورتی که هر دو کلاس نوشته شده متد init داشته باشند ، اولویت با اجرای متد کلاس پدر (کلاسی که از آن ارث بری شده) می باشد .

خب این مقاله هم در اینجا به پایان می رسه ؛ ممنونم که تا انتهای مقاله من رو همراهی کردین . امیدوارم بعد از مطالعه ی این مقاله به راحتی بتونین از مفهوم ارث بری در پایتون استفاده کنید . جهت مطالعه ی بیشتر می تونین به اینجا سر بزنین . مقاله ی بعدی که در رابطه با کپسوله سازی در پایتون هست هم از دست ندین .

تا مقاله ی بعدی خداوند یار و نگهدارتون .

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

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