logo

Деструктори у Пајтону

Корисници позивају Деструцтор за уништавање објекта. У Питхон-у, програмерима можда неће бити потребни деструктори онолико колико је потребно у језику Ц++. То је зато што Питхон има сакупљач смећа чија је функција аутоматско управљање меморијом.

У овом чланку ћемо разговарати о томе како деструктори у Питхон-у функционишу и када корисници могу да их користе.

Тхе __од__() функција се користи као функција деструктора у Питхон . Корисник може да позове __од__() функција када су све референце објекта избрисане и он постаје отпад који се сакупља.

Синтакса:

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

Корисници такође треба да примете да се референца на објекте такође брише када објекат изађе из референце или када се код заврши.

У следећем примеру користићемо функцију __дел__() и кључну реч дел за брисање свих референци објекта тако да ће се деструктор аутоматски укључити.

На пример:

 # 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. 

Сада у следећем примеру, видећемо да када се функција() позове, она ће креирати инстанцу класе Зебра, која саму себе прослеђује класи Лион, која ће затим поставити референцу на класу Зебра, и то ће резултирати кружна референца.

Пример:

 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 

Генерално, сакупљач смећа у Питхон-у, који се користи за откривање ових типова цикличних референци, такође ће уклонити референцу. Али, у горњем примеру, прилагођени деструктор се користи за означавање ове ставке као ненаплативе.

Једноставним језиком, то значи да сакупљач смећа не зна редослед којим предмет треба да се уништи, па их оставља. Дакле, ако су инстанце корисника укључене у ову кружну референцу, оне ће остати ускладиштене у меморији све док се апликација покреће.

Закључак

У овом чланку смо објаснили функцију деструктора у Питхон-у и како их корисници могу користити за брисање објеката чије су референце већ уклоњене из меморије.