Python – چند ریختی (Polymorphism)

چندریختی (Polymorphism) در پایتون

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

چندریختی در توابع

در پایتون، یک تابع می‌تواند روی انواع مختلفی از اشیاء اعمال شود. به عنوان مثال تابع len():

  • رشته (String):

x = "Hello World!"
print(len(x))  # نتیجه: 12
  • تاپل (Tuple):
mytuple = ("apple", "banana", "cherry")
print(len(mytuple))  # نتیجه: 3
  • دیکشنری (Dictionary):
thisdict = {
    "brand": "Ford",
    "model": "Mustang",
    "year": 1964
}
print(len(thisdict))  # نتیجه: 3

چندریختی در کلاس‌ها

چندریختی اغلب در روش‌های کلاس‌ها استفاده می‌شود، جایی که چند کلاس مختلف یک نام روش مشابه دارند. برای مثال، سه کلاس ماشین (Car)، قایق (Boat) و هواپیما (Plane) که همه آن‌ها یک متد با نام یکسان دارند:

class Car:
    def move(self):
        print("Drive!")

class Boat:
    def move(self):
        print("Sail!")

class Plane:
    def move(self):
        print("Fly!")

# اجرای چندریختی
car1 = Car()
boat1 = Boat()
plane1 = Plane()

for vehicle in (car1, boat1, plane1):
    vehicle.move()

در اینجا، با استفاده از یک حلقه ساده می‌توانیم متد move() را روی تمام اشیاء اجرا کنیم.

چندریختی و ارث‌بری

می‌توان کلاس‌های والد و فرزند را نیز به‌گونه‌ای طراحی کرد که فرزندان از متدهای والد ارث‌بری کنند و در صورت نیاز آن‌ها را بازنویسی (override) کنند:

class Vehicle:
    def move(self):
        print("Move!")

class Car(Vehicle):
    pass  # هیچ بازنویسی انجام نمی‌دهد

class Boat(Vehicle):
    def move(self):
        print("Sail!")  # متد را بازنویسی می‌کند

class Plane(Vehicle):
    def move(self):
        print("Fly!")  # متد را بازنویسی می‌کند

# اجرای کد
car1 = Car()
boat1 = Boat()
plane1 = Plane()

for vehicle in (car1, boat1, plane1):
    vehicle.move()

در این مثال، کلاس‌های Boat و Plane متد move() را از کلاس والد بازنویسی می‌کنند، در حالی که Car همان متد والد را به کار می‌برد.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - آرایه‌ها (Arrays)

JavaScript – آرایه‌ها (Arrays)

آرایه در جاوااسکریپت متغیری خاص است که می‌تواند بیش از یک مقدار را ذخیره کند. const cars = ["Saab",...

بیشتر بخوانید
JavaScript - ویژگی‌های عدد (Number Properties)

JavaScript – ویژگی‌های عدد (Number Properties)

در جاوااسکریپت، شیء Number شامل ویژگی‌هایی از پیش تعریف‌شده است که برای کار با اعداد مفید هستند. این ویژگی‌ها...

بیشتر بخوانید
JavaScript - متدهای عدد (Number Methods)

JavaScript – متدهای عدد (Number Methods)

در جاوا اسکریپت، متدهایی برای کار با اعداد ارائه شده‌اند که می‌توانند روی تمامی اعداد استفاده شوند. متدهای مربوط...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.