پایتون

جلسه ۵۰: انواع وراثت در پایتون

در این درس با انواع وارثت در پایتون آشنا خواهید شد.

بر اساس کلاس‌های parent و child پنج نوع وراثت داریم:

  • single
  • multi-level
  • Hierarchical
  • Multiple
  • Hybrid

ارث‌بری مجرد(single)

در این نوع، فقط یک کلاس از کلاس دیگر ارث بری کرده است. به عنوان مثال ما یک کلاس parent با نام Vehicle داریم و یک کلاس Car به عنوان child. حال در کد زیر این را بررسی میکنیم:

class Vehicle:  # parent class
    def setTopSpeed(self, speed):  # defining the set
        self.topSpeed = speed
        print("Top speed is set to", self.topSpeed)


class Car(Vehicle):  # child class
    def openTrunk(self):
        print("Trunk is now open.")


corolla = Car()  # creating an object of the Car class
corolla.setTopSpeed(220)  # accessing methods from the parent class
corolla.openTrunk()  # accessing method from its own class

وراثت Multi-level یا چند سطحی

زمانی که یک کلاس از کلاس دیگر نشات گرفته باشد و آن خودش از کلاسی دیگر، در این صورت به آن‌ها Multi-Level گفته میشود. ما میتوانیم از کلاس ها به هر تعداد که بخواهیم در سطح‌های مختلف مانند شکل زیر تعریف کنیم:

حال بر اساس تصویر بالا، این سه کلاس را پیاده‌سازی میکنیم.

  • ماشین یک وسیله‌نقلیه است.
  • هیبرید یک ماشین است.
class Vehicle:  # parent class
    def setTopSpeed(self, speed):  # defining the set
        self.topSpeed = speed
        print("Top speed is set to", self.topSpeed)


class Car(Vehicle):  # child class of Vehicle
    def openTrunk(self):
        print("Trunk is now open.")


class Hybrid(Car):  # child class of Car
    def turnOnHybrid(self):
        print("Hybrid mode is now switched on.")


priusPrime = Hybrid()  # creating an object of the Hybrid class
priusPrime.setTopSpeed(220)  # accessing methods from the parent class
priusPrime.openTrunk()  # accessing method from the parent class
priusPrime.turnOnHybrid()  # accessing method from the child class

وراثت Hierarchical یا سلسله مراتبی

وقتی بیشتر از یک کلاس، از یک کلاسی ارث بری کنند، به این نوع سلسه مراتبی میگوییم. در وراثت سلسله مراتبی، بیش‌تر از یک کلاس، بر اساس نیاز، از کلاس پایه گسترش می‌یابند. ویژگی‌ها مشترک بین این child ها در کلاس parent پیاده‌سازی میشود.

مثال

  • ماشین یک وسیله‌نقلیه است.
  • کامیون یک وسیله نقلیه است.

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

class Vehicle:  # parent class
    def setTopSpeed(self, speed):  # defining the set
        self.topSpeed = speed
        print("Top speed is set to", self.topSpeed)


class Car(Vehicle):  # child class of Vehicle
    pass


class Truck(Vehicle):  # child class of Vehicle
    pass


corolla = Car()  # creating an object of the Car class
corolla.setTopSpeed(220)  # accessing methods from the parent class

volvo = Truck()  # creating an object of the Truck class
volvo.setTopSpeed(180)  # accessing methods from the parent class

وراثت Multiple

وقتی یک کلاس از دو کلاس ارث ببرد، در واقع یک کلاس child، بیشتر از یک Parent داشته باشد. در اینصورت به آن Multiple میگوییم.

مثال

  • موتور هیبرید یک موتور الکتریکی است.
  • موتور هیبرید یک موتور سوختی است.

در کد زیر مثالی از وراثتMultiple داریم:

class CombustionEngine():  
    def setTankCapacity(self, tankCapacity):
        self.tankCapacity = tankCapacity


class ElectricEngine():  
    def setChargeCapacity(self, chargeCapacity):
        self.chargeCapacity = chargeCapacity

# Child class inherited from CombustionEngine and ElectricEngine
class HybridEngine(CombustionEngine, ElectricEngine):
    def printDetails(self):
        print("Tank Capacity:", self.tankCapacity)
        print("Charge Capacity:", self.chargeCapacity)

car = HybridEngine()
car.setChargeCapacity("250 W")
car.setTankCapacity("20 Litres")
car.printDetails()

وراثت هیبرید (Hybrid)

یک نوع وراثت که ترکیبی از Multiple و Multi-level است و آن را وراثت Hybrid می‌نامیم.

  • موتور سوختی یک موتور است.
  • موتور الکتریکی یک موتور است.
  • موتور هیبریدی یک موتور الکتریکی و سوختی است.

در کدهای زیر مثالی از این نوع را میبینید:

class Engine:  # Parent class
    def setPower(self, power):
        self.power = power


class CombustionEngine(Engine):  # Child class inherited from Engine
    def setTankCapacity(self, tankCapacity):
        self.tankCapacity = tankCapacity


class ElectricEngine(Engine):  # Child class inherited from Engine
    def setChargeCapacity(self, chargeCapacity):
        self.chargeCapacity = chargeCapacity

# Child class inherited from CombustionEngine and ElectricEngine


class HybridEngine(CombustionEngine, ElectricEngine):
    def printDetails(self):
        print("Power:", self.power)
        print("Tank Capacity:", self.tankCapacity)
        print("Charge Capacity:", self.chargeCapacity)


car = HybridEngine()
car.setPower("2000 CC")
car.setChargeCapacity("250 W")
car.setTankCapacity("20 Litres")
car.printDetails()

این درس در مورد انواع مختلف از وراثت بود. در درس بعدی مزایای وراثت را یاد خواهیم‌گرفت.

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

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

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

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