מתקדם > תכנות מונחה עצמים > מתודות מיוחדות

מתודות מיוחדות 

בנוסף למתודות הרגילות, קיימות מספר מתודות מיוחדות שמחלקות פיתון יכולות להגדיר. מתודות אלו לא נקראות באופן ישיר על ידי הקוד שלך, אלא נקראות על ידי פיתון במקרים מיוחדים או בעקבות שימוש בפקודות מיוחדות.

ניתן לעשות דברים רבים בעזרת מתודות "רגילות" , אולם ישנם דברים רבים שניתן לעשות בעזרת מילון מעבר לשימוש במתודות הרגילות. למשל – כדי להציב ולשלוף אלמנטים מתוך המילון, יש לממש מתודות מיוחדות במחלקה היורשת.

def __getitem__(self, key): return self.data[key]
>>> f = fileinfo.FileInfo("/music/_singles/kairo.mp3")

>>> f

{'name':'/music/_singles/kairo.mp3'}

>>> f.__getitem__("name")

'/music/_singles/kairo.mp3'

>>> f["name"]

'/music/_singles/kairo.mp3'

העבירו את הסמן מעל השורות המסומנות לקבלת הסברים

בדומה למתודה שראינו זה עתה, גם המתודה __setitem__ היא מתודה מיוחדת, הנקראת על ידי פיתון במקרים מיוחדים, כמו בדוגמה הבאה:

def __setitem__(self, key, item): self.data[key] = item
>>> f

{'name':'/music/_singles/kairo.mp3'}

>>> f.__setitem__("genre", 31)

>>> f

{'name':'/music/_singles/kairo.mp3', 'genre':31}

>>> f["genre"] = 32

>>> f

{'name':'/music/_singles/kairo.mp3', 'genre':32}
 

העבירו את הסמן מעל השורות המסומנות לקבלת הסברים

נסתכל עת מספר דוגמאות נוספות למתודות מיוחדות:

def __repr__(self): return repr(self.data)
def __cmp__(self, dict):
   
if
isinstance(dict, UserDict):
       
return
cmp(self.data, dict.data)
   
els
e:
       
return
cmp(self.data, dict) 

העבירו את הסמן מעל השורות המסומנות לקבלת הסברים

ישנן עוד מתודות מיוחדות רבות – כאלה המאפשרות למחלקות להתנהג כמו מספרים (כדי לחבר, להכפיל וכד' מופעים של המחלקה). המתודה __call__ מאפשרת למחקה להתנהג כמו פונקציה, וכך להפעיל מופעים באופן ישיר. חלק ממתודות אלו יוצגו בפרקים הבאים.

 

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