logo

Destructors ב- Python

המשתמשים קוראים Destructor על השמדת האובייקט. ב-Python, ייתכן שהמפתחים לא יצטרכו משמידים עד כמה שצריך בשפת C++. הסיבה לכך היא של-Python יש אספן אשפה שתפקידו לטפל בניהול זיכרון באופן אוטומטי.

במאמר זה, נדון כיצד ההורסים ב- Python פועלים ומתי המשתמשים יכולים להשתמש בהם.

ה __של ה__() הפונקציה משמשת כפונקציית ההרס ב פִּיתוֹן . המשתמש יכול להתקשר ל- __של ה__() פונקציה כאשר כל ההפניות של האובייקט נמחקו, והוא הופך לזבל שנאסף.

תחביר:

 def __del__(self): # the body of destructor will be written here. 

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

בדוגמה הבאה, נשתמש בפונקציה __del__() ובמילת המפתח del למחיקת כל ההפניות של האובייקט כך שההרס יכלול אוטומטית.

לדוגמה:

 # we will illustrate destructor function in Python program # we will create Class named Animals class Animals: # we will initialize the class def __init__(self): print('The class called Animals is CREATED.') # now, we will Call the destructor def __del__(self): print('The destructor is called for deleting the Animals.') object = Animals() del object 

תְפוּקָה:

 The class called Animals is CREATED. The destructor is called for deleting the Animals. 

הסבר -

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

אנו יכולים גם לשים לב שהמשמיד נקרא לאחר סיום התוכנית.

דוגמא:

 # We will create Class named Animals class Animals: # Initialize the class def __init__(self): print('The class called Animals is CREATED.') # now, we will Call the destructor def __del__(self): print('The destructor is called for deleting the Animals.') def Create_object(): print('we are creating the object') object = Animals() print('we are ending the function here') return object print('we are calling the Create_object() function now') object = Create_object() print('The Program is ending here') 

תְפוּקָה:

 we are calling the Create_object() function now we are creating the object The class called Animals is CREATED. we are ending the function here The Program is ending here The destructor is called for deleting the Animals. 

כעת בדוגמה הבאה, נראה שכאשר הפונקציה() תיקרא, היא תיצור את המופע של המחלקה Zebra, שמעביר את עצמו למחלקה Lion, אשר יגדיר את ההפניה למחלקה Zebra, וזה יגרום ל הפניה מעגלית.

דוגמא:

 class Animals: # we will initialize the class def __init__(self): print(' The class called Animals is CREATED.') class Lion: def __init__(self, zebraa): self.zebra = zebraa class Zebra: def __init__(self): self.lion = Lion(self) def __del__(self): print('Zebra is dead') def function(): zebra = Zebra() function() 

תְפוּקָה:

 Zebra is dead 

באופן כללי, ה- Garbage collector של Python, המשמש לאיתור סוגים אלו של הפניות מחזוריות, יסיר גם את ההפניה. אבל, בדוגמה שלמעלה, המשמיד המותאם אישית משמש לסימון פריט זה כבלתי ניתן לאיסוף.

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

סיכום

במאמר זה, הסברנו את הפונקציה של Destructors ב-Python וכיצד המשתמשים יכולים להשתמש בהם למחיקת האובייקטים שההפניות שלהם כבר הוסרו מהזיכרון.