چندریختی(چندشکلی) در پایتون
چند شکلی ها متد ها یا دستوراتی هستند که می توانند در بخش های مختلف کاربرد داشته باشند.
با استفاده از این کاربرد از مبحث شئ گرایی می توانید با ایجاد یک تابع ،در همه ی کلاس ها از آن استفاده کنید.
برخی توابع وجود دارد که در ماژول های داخلی پایتون هستند و همیشه می توان آنها را فراخوانی و استفاده کرد.
متد ()len در پایتون یک چندشکلی
متد ()len در پایتون برای برگرداندن طول دنباله هایی مانند رشته ، لیست ، تاپل و... استفاده می شود.
این متد یک چندشکلی است، زیرا در چند بخش می توان از آن استفاده کرد.
print(len(x))
چند شکلی در کلاس ها پایتون
در صورتی که چند کلاس داشته باشیم و بخواهیم برای آنها متدی در نظر بگیریم می توانیم از روش چندشکلی ها استفاده کنیم.
برای مثال سه کلاس با نام های phone و laptop و PC ایجاد می کنیم ودر آنها یک متد مشترک به نام size را ایجاد می کنیم که اندازه هر دستگاه را چاپ می کند.
class phone(self):
self.brand = brand
self.score = score
def size(self):
print("small!")
class laptop(self):
self.brand = brand
self.score = score
def size(self):
print("medium!")
class PC(self):
self.brand = brand
self.score = score
def size(self):
print("big!")
در ادامه به هر کلاس یک مقدار جدید می دهیم.
phone1 = phone("apple", "89")
laptop1 = laptop("lenovo", "78")
PC1 = PC("samsung", "88")
از متغیرهای ساخته شده یک تاپل ایجاد می کنیم و با حلقه زدن روی آن، متد size را روی همه متغیرها ایجاد می کنیم تا اندازه آنها چاپ شود.
for x in (phone1, laptop1, PC1):
x.size()
وراثت در چند شکلی ها پایتون
اگر یک کلاس فرزند ایجاد کنیم همه ی مقادیر و متدهای کلاس والد را دریافت می کند و در کلاس فرزند قابل استفاده است.
نکته: برای درک بهتر به درس وراثت پایتون مراجعه کنید.
برای مثال یک کلاس والد به نام Device که در آن دو شئ برند و امتیاز و متد size که همان اندازه دستگاه است، ایجاد می کنیم.
class Device:
def __init__(self, brand, score):
self.brand = brand
self.score = score
سپس سه کلاس فرزند را با ارث بری از کلاس Device ایجاد می کنیم.
class phone(Device):
def size(self):
print("small!")
class laptop(Device):
def size(self):
print("medium!")
class PC(Device):
def size(self):
print("big!")
مانند مثال بخش قبل با حلقه زدن روی تاپل برند و امتیاز هر یک را چاپ می کنیم.
for x in (phone1, laptop1, PC1):
print(x.brand)
print(x.score)
x.size()
خلاصه درس
در این درس با چندشکلی ها و کاربرد آن آشنا شدید.