logo

Destruktory w Pythonie

Użytkownicy wywołują Destructor w celu zniszczenia obiektu. W Pythonie programiści mogą nie potrzebować destruktorów tak bardzo, jak jest to potrzebne w języku C++. Dzieje się tak, ponieważ Python ma moduł zbierający elementy bezużyteczne, którego funkcją jest automatyczne zarządzanie pamięcią.

W tym artykule omówimy, jak działają destruktory w Pythonie i kiedy użytkownicy mogą z nich korzystać.

The __z__() funkcja jest używana jako funkcja destruktora w Pyton . Użytkownik może wywołać __z__() funkcja, gdy wszystkie odniesienia do obiektu zostaną usunięte i obiekt zostanie wyrzucony do śmieci.

Składnia:

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

Użytkownicy powinni również pamiętać, że odniesienie do obiektów jest również usuwane, gdy obiekt wychodzi z odniesienia lub gdy kod się kończy.

W poniższym przykładzie użyjemy funkcji __del__() i słowa kluczowego del do usunięcia wszystkich odwołań do obiektu, tak aby destruktor zadziałał automatycznie.

Na przykład:

 # 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 

Wyjście:

jak sortować listę tablic w Javie
 The class called Animals is CREATED. The destructor is called for deleting the Animals. 

Wyjaśnienie -

W powyższym kodzie destruktor wywoływany jest w momencie usunięcia odwołań do obiektu lub po zakończeniu programu. Oznacza to, że liczba odwołań do obiektu osiągnie zero, a nie wtedy, gdy obiekt wyjdzie poza zakres. Wyjaśnimy to pokazując kolejny przykład.

Możemy również zauważyć, że destruktor wywoływany jest po zakończeniu programu.

Przykład:

lis kontra wilk
 # 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') 

Wyjście:

 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. 

W następnym przykładzie zobaczymy, że wywołanie funkcji () utworzy instancję klasy Zebra, która przejdzie do klasy Lion, która następnie ustawi referencję do klasy Zebra, co spowoduje odniesienie okrężne.

Przykład:

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

Wyjście:

 Zebra is dead 

Ogólnie rzecz biorąc, moduł Garbage Collector w Pythonie, który jest używany do wykrywania tego typu odniesień cyklicznych, również usunie to odniesienie. Jednak w powyższym przykładzie niestandardowy destruktor służy do oznaczenia tego przedmiotu jako niemożliwego do zebrania.

W prostym języku oznacza to, że śmieciarz nie zna kolejności, w jakiej obiekty powinny zostać zniszczone, więc je pozostawia. Jeśli zatem instancje użytkowników są objęte tym cyklicznym odniesieniem, pozostaną one przechowywane w pamięci tak długo, jak długo będzie działać aplikacja.

Wniosek

W tym artykule wyjaśniliśmy funkcję destruktorów w Pythonie i sposób, w jaki użytkownicy mogą ich używać do usuwania obiektów, których odniesienia zostały już usunięte z pamięci.