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 - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

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

نظرات

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

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