פייתון/פייתון גרסה 3/פולימורפיזם

פולימורפיזם

עריכה

קיימים מתודות שפועלות באופן שונה בטיפוסים. תכונה זו נקראת פולימורפיזם.

כך, פונקציות ומתודות built-in (מובנות) כגון len ו־str ידעו איזה ערך עליהן להחזיר.

למשל, האופרטור   מוגדר על ידי המתודה __add__.

הפעולה   היא פעולה שונה עבור טיפוסים שונים.

למשל עבור מחרוזת היא מוגדרת שרשור ואילו עבור מספרים מבצעת פעולת חשבון – חיבור.

מתודות אלו נקראות לעיתים magic methods (מתודות קסומות) או Dunder Methods, ומשמשות לעיתים קרובות. פונקציות אלו יתחילו ויגמרו עם שני קווים תחתונים, לסימונן ככאלו. גם __init__ היא Magic Method.

למה זה טוב?

עריכה

נניח נרצה ליצור אובייקט חדש שתפעל עליו פונקצית len. נוכל להשתמש בפונקצית len() עבור אובייקט חדש באמצעות הגדרת המתודה len באותו אוביקט:

class Book:

   def __init__(self, title, pages):
      self.title = title
      self.pages = pages

   def __len__(self):
      return self.pages

book = Book("Man's Search for Meaning", 200)

print(len(book))
>>>200

בזה הרגע יצרנו מחלקה ואובייקט חדש. על פניו אין להם שום קשר להגדרות הקיימות בפייתון אך הנה באמצעות שימוש במתודות מוסכמות - הצלחנו להגדיר על האובייקט החדש שימוש בפונקציה שהייתה קיימת במערכות פייתון!