פייתון/פייתון גרסה 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
בזה הרגע יצרנו מחלקה ואובייקט חדש. על פניו אין להם שום קשר להגדרות הקיימות בפייתון אך הנה באמצעות שימוש במתודות מוסכמות - הצלחנו להגדיר על האובייקט החדש שימוש בפונקציה שהייתה קיימת במערכות פייתון!