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 همان متد والد را به کار میبرد.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام