מתקדם > תכנות מונחה עצמים > יצירת מופעים של מחלקות

יצירת מופעים של מחלקות

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

>>> import fileinfo
>>> f = fileinfo.FileInfo("/music/_singles/kairo.mp3")
>>> f.__class__
<class fileinfo.FileInfo at 010EC204>

>>> f.__doc__
'base class for file info'

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

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

אם כן, הגדרת מופע של מחלקה בפיתון הוא פשוט ואחיד – אין בפיתון הגדרות מופעים בעזרת אופרטור new כפי שמשתמשים בו בשפת C++.

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

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

 

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