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 همان متد والد را به کار می‌برد.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

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

نظرات

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

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