پلی‌مورفیسم در پایتون

python polymorphism
11 آذر 1403

پلی‌مورفیسم در پایتون


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


به زبان ساده، پلی‌مورفیسم به ما این اجازه را می‌دهد که با استفاده از یک روش مشترک، کارهای مختلفی انجام دهیم. مثلاً فرض کنید دو کلاس مختلف داریم؛ یکی برای حیوانات و دیگری برای وسایل نقلیه. با استفاده از پلی‌مورفیسم، می‌توانیم یک تابع ایجاد کنیم که هم روی حیوانات و هم روی وسایل نقلیه کار کند، بی‌آنکه نیاز باشد تابع‌های جداگانه‌ای برای هر دسته بنویسیم.


یکی از کاربردهای شگفت‌انگیز پلی‌مورفیسم این است که می‌توانیم از متدهایی استفاده کنیم که ورودی آن‌ها می‌تواند از انواع مختلفی باشد. این به ما کمک می‌کند تا کدهای تمیزتری بنویسیم و توانایی نگهداری از آن‌ها را بالا ببریم. مثلاً فکر کنید که نیاز دارید با اشیاء مختلفی ارتباط برقرار کنید، تنها کافی است از یک تابع واحد استفاده کنید که می‌تواند با آن‌ها تعامل داشته باشد.


در تصویر کلان، پلی‌مورفیسم به ما کمک می‌کند تا طراحی‌هایی بسازیم که نه تنها به‌راحتی قابل درک هستند بلکه قابلیت توسعه و نگهداری نیز دارند. در ادامه، یک مثال عملی از پلی‌مورفیسم در پایتون را بررسی خواهیم کرد تا به صورت ملموس‌تر از این مفهوم بهره‌برداری کنیم.


class Animal:
def sound(self):
pass

class Dog(Animal):
def sound(self):
return "Woof!"

class Cat(Animal):
def sound(self):
return "Meow!"

def animal_sound(animal):
print(animal.sound())

my_dog = Dog()
my_cat = Cat()

animal_sound(my_dog) # خروجی: Woof!
animal_sound(my_cat) # خروجی: Meow!

توضیحات کد


در ابتدا یک کلاس پایه به نام Animal تعریف می‌کنیم که متد sound را به صورت خالی قرار می‌دهیم. این کلاس به عنوان یک الگو برای دیگر کلاس‌ها عمل می‌کند.


سپس دو کلاس Dog و Cat را تعریف می‌کنیم که هر یک از آن‌ها کلاس Animal را ارث‌بری می‌کنند و متد sound را به طور خاص برای خود پیاده‌سازی می‌کنند.


در مرحله بعد، یک تابع animal_sound تعریف می‌کنیم که ورودی آن یک شیء از نوع Animal است و با استفاده از متد sound صدا را چاپ می‌کند.


در نهایت، ما دو شیء از کلاس‌های Dog


و Cat ایجاد می‌کنیم و با استفاده از تابع animal_sound، صداهای مخصوص هر کدام را به نمایش می‌گذاریم. نتیجه این خواهد بود که با یک تابع واحد، قادر به نمایش صدای حیوانات مختلف هستیم.


سوالات متداول

؟

پلی‌مورفیسم در پایتون چیه؟

؟

چطور می‌توانم از پلی‌مورفیسم در کدهایم استفاده کنم؟