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 - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

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

نظرات

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

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