به آموزشگاه مجازی سینا خوش آمدید!

آموزش چند ریختی در پایتون

امتیاز
(0)

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


چند ریختی در تابع‌ها

اگر بخواهیم در پایتون، تابعی را مثال بزنیم که بتواند در آبجکت‌های مختلف مورد استفاده قرار گیرد، می‌‌توانیم تابع len() را معرفی کنیم. 


استفاده از تابع len() در رشته‌ها(String)

تابع len() برای رشته‌ها، تعداد کاراکترهای آن را برمی‌گرداند:

مثال شماره 11

x = "Hello World!"

print(len(x))

نتیجه:

12
امتحان کنید

استفاده از تابع len() در تاپل‌ها

تابع len() برای تاپل‌ها، تعداد آیتم‌های درون آن را برمی‌گرداند:

مثال شماره 12

mytuple = ("apple", "banana", "cherry")

print(len(mytuple))

نتیجه:

3
امتحان کنید

استفاده از تابع len() در دیکشنری

تابع len() برای دیکشنری‌ها، تعداد جفت‌های کلید/مقدار(key/value) در آن را برمی‌گرداند:

مثال شماره 13

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}

print(len(thisdict))

نتیجه:

3
امتحان کنید

چند ریختی در کلاس‌های پایتون

اغلب از چند ریختی، در متدهای کلاس(Class methods)  استفاده می‌شود، به طوری که می‌توانیم چندین کلاس داشته باشیم که نام متد یکسانی داشته باشند. بعنوان مثال، فرض کنید سه کلاس به نام‌های Car و Boat و Plane داشته باشیم که همه‌ی آنها، یک متد به نام move() داشته باشند:

مثال شماره 14

کلاس‌های مختلف که متدهای یکسانی دارند:

class Car:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Drive!")

class Boat:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Sail!")

class Plane:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Fly!")

car1 = Car("Ford", "Mustang")       #Create a Car object
boat1 = Boat("Ibiza", "Touring 20") #Create a Boat object
plane1 = Plane("Boeing", "747")     #Create a Plane object

for x in (car1, boat1, plane1):
  x.move()

نتیجه:

Drive!
Sail!
Fly!
امتحان کنید

در مثال بالا، به حلقه‌ی for در انتهای کدها توجه کنید. به خاطر چند ریختی، ما می‌توانیم متد مشابهی را برای هر سه کلاس، مورد استفاده قرار دهیم. 


وراثت در چند ریختیِ کلاس

سوال: با کلاس‌ها، و کلاس‌های فرزندی که نام مشابهی دارند باید چه کار کنیم؟ آیا می‌توانیم در آنها از چند ریختی استفاده کنیم؟

پاسخ: بله. اگر از مثال بالا استفاده کنیم و یک کلاس والد به نام Vehicle ایجاد کنیم، و کلاس‌های Car و Boat و Plane را بعنوان کلاس‌های فرزند، از کلاس Vehicle قرار دهیم، این کلاس‌های فرزند، متدهای Vehicle را به ارث می‌برند، اما می‌توانند آنها را نادیده بگیرند(لغو کنند؛ override). 

مثال شماره 15

ایجاد یک کلاس به نام Vehicle و تنظیم کلاس های Car و Boat و Plane بعنوان کلاس‌های فرزند Vehicle:

class Vehicle:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  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("Ford", "Mustang") #Create a Car object
boat1 = Boat("Ibiza", "Touring 20") #Create a Boat object
plane1 = Plane("Boeing", "747") #Create a Plane object

for x in (car1, boat1, plane1):
  print(x.brand)
  print(x.model)
  x.move()

نتیجه:

Ford
Mustang
Move!
Ibiza
Touring 20
Sail!
Boeing
747
Fly!
امتحان کنید

کلاس‌های فرزند، متدها و پروپرتی‌ها را از کلاس والد به ارث می‌برند. 

در مثال بالا، می‌توانیم ببینیم که کلاس Car خالی است اما از کلاس Vehicle، پروپرتی‌های brand و model و متد move() را به ارث می‌بَرَد. 

کلاس‌های Boat و Plane نیز پروپرتی‌های brand و model و متد move() را از کلاس Vehicle به ارث می‌برند اما هردوی آنها، متد move() را نادیده می‌گیرند(لغو یا override می‌کنند). 

با استفاده از چند ریختی در پایتون، می‌توانیم از یک متد مشابه، برای تمام کلاس‌ها استفاده کنیم. 


منبع: www.w3schools.com/python

 

  • بازدید: 41

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال