logo

Destruktorok Pythonban

A felhasználók a Destructort hívják az objektum megsemmisítésére. A Pythonban a fejlesztőknek talán nincs szükségük destruktorokra, mint amennyire a C++ nyelvben. Ennek az az oka, hogy a Pythonnak van egy szemétgyűjtője, amelynek funkciója a memóriakezelés automatikus kezelése.

Ebben a cikkben megvitatjuk, hogyan működnek a Python destruktorai, és mikor használhatják őket a felhasználók.

A __ of the__() függvény destruktor függvényként használatos Piton . A felhasználó felhívhatja a __ of the__() funkciót, ha az objektum összes hivatkozását törölték, és az objektum szemétté válik.

élő tücskömet

Szintaxis:

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

A felhasználóknak azt is figyelembe kell venniük, hogy az objektumokra való hivatkozás akkor is törlődik, ha az objektum kikerül a hivatkozásból, vagy amikor a kód véget ér.

tömb vs tömblista

A következő példában a __del__() függvényt és a del kulcsszót használjuk az objektum összes hivatkozásának törlésére, így a destruktor automatikusan bevonja.

Például:

 # 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 

Kimenet:

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

Magyarázat -

A fenti kódban a destruktor akkor hívott, amikor az objektumra való hivatkozások törlődnek, vagy a program befejezése után. Ez azt jelenti, hogy az objektum referenciaszáma nullává válik, és nem akkor, amikor az objektum kikerül a hatókörből. Ezt a következő példa bemutatásával magyarázzuk meg.

Észrevehetjük azt is, hogy a destruktort a program vége után hívják meg.

Példa:

java localdatetime
 # 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') 

Kimenet:

 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. 

A következő példában látni fogjuk, hogy a() függvény meghívásakor létrehozza a Zebra osztály példányát, amely átadja magát a Lion osztálynak, amely ezután beállítja a hivatkozást a Zebra osztályra, és ennek eredménye a a körkörös hivatkozás.

Példa:

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

Kimenet:

részkarakterlánc java-ban
 Zebra is dead 

Általában a Python szemétgyűjtője, amelyet az ilyen típusú ciklikus hivatkozások észlelésére használnak, szintén eltávolítja a hivatkozást. A fenti példában azonban az egyéni destruktort használjuk az elem begyűjthetetlenként való megjelölésére.

Leegyszerűsítve azt jelenti, hogy a szemétszállító nem tudja, milyen sorrendben kell megsemmisíteni a tárgyat, ezért elhagyja őket. Tehát, ha a felhasználók példányai részt vesznek ebben a körkörös hivatkozásban, akkor a memóriában maradnak mindaddig, amíg az alkalmazás fut.

Következtetés

Ebben a cikkben elmagyaráztuk a destruktorok funkcióját a Pythonban, és azt, hogy a felhasználók hogyan használhatják őket azon objektumok törlésére, amelyek hivatkozásai már eltávolítva a memóriából.