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

Изход:

 Zebra is dead 

По принцип Garbage collector на Python, който се използва за откриване на тези типове циклични препратки, също ще премахне препратката. Но в горния пример персонализираният деструктор се използва за маркиране на този елемент като несъбираем.

На прост език това означава, че събирачът на боклук не знае реда, в който обектът трябва да бъде унищожен, затова ги напуска. Така че, ако екземплярите на потребителите са включени в тази кръгова препратка, те ще останат съхранени в паметта толкова дълго, колкото приложението ще работи.

java цяло число

Заключение

В тази статия обяснихме функцията на деструкторите в Python и как потребителите могат да ги използват за изтриване на обекти, чиито препратки вече са премахнати от паметта.