logo

Деструктори в Python

Користувачі викликають Destructor для знищення об'єкта. У Python розробникам можуть не потрібні деструктори настільки, наскільки вони потрібні в мові C++. Це тому, що Python має збирач сміття, функція якого автоматично обробляє керування пам’яттю.

У цій статті ми обговоримо, як працюють деструктори в Python і коли користувачі можуть їх використовувати.

The __з__() функція використовується як функція деструктора в 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. 

Пояснення -

як знайти заблоковані номери на android

У наведеному вище коді деструктор викликається, коли посилання на об’єкт видаляються або після завершення програми. Це означає, що кількість посилань для об’єкта стає нульовою, а не коли об’єкт виходить за межі області видимості. Ми пояснимо це, показавши наступний приклад.

Ми також можемо помітити, що деструктор викликається після завершення програми.

приклад:

 # 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() 

Вихід:

перетворення рядка в int
 Zebra is dead 

Загалом, збірник сміття Python, який використовується для виявлення цих типів циклічних посилань, також видалить посилання. Але в наведеному вище прикладі спеціальний деструктор використовується для позначення цього елемента як такого, що неможливо зібрати.

Простою мовою це означає, що збирач сміття не знає порядку, в якому потрібно знищити об'єкт, тому залишає їх. Отже, якщо екземпляри користувачів задіяні в цьому циклічному посиланні, вони зберігатимуться в пам’яті доти, доки працюватиме програма.

Висновок

У цій статті ми пояснили функцію деструкторів у Python і як користувачі можуть використовувати їх для видалення об’єктів, посилання на які вже видалено з пам’яті.