Introduktion til Destructor i Python

Konstruktører og destruktører er to vigtige begreber i python. Konstruktører kaldes, når objektets klasse oprettes. Destruktorer kaldes dog, når objektets klasse ødelægges. Derfor er det ikke forkert at sige, konstruktører, er det modsatte af destruktører. Python, der er et objektorienteret programmeringssprog, er konstruktører og destruktører også en del af dette sprog.

Destruktorer bruges ikke i python så meget som Java og C ++. Men at vide det er en endnu stærkere base i python.

Destruktorer kan bevises meget nyttige, når det kommer til sundhedsarbejdet i programmet. For eksempel: frigivelse af de brugte ressourcer, inden du kommer ud af programmet, som at frigive hukommelser, lukke filer osv.

Det nøgleord, der bruges til at definere Destructor, er: __del __ () nøgleord:

Syntaks:

def __del__(self):
#destructor body

Som man kan se, er __del__ det nøgleord, der bruges til at definere destructor. Når det kaldes, slettes al henvisning til det objekt, som også kaldes affaldsopsamling.

Eksempler på Destructor i Python

Lad os se forskellige eksempler på destructor i python for at få en bedre forståelse:

Eksempel 1

class Grocery:
# Initializing
def __init__(self):
print('Grocery created.')
# Deleting (Calling destructor)
def __del__(self):
print('Destructor called, Grocery deleted.')
obj = Grocery()
del obj

Produktion:

“Købmand” er den klasse, der er defineret med dens specielle metoder: konstruktør og destruktør.

Så man kan se, når genstanden for klassen “købmand” er oprettet. Det påkalder automatisk __init__, som er konstruktøren af ​​klassen. Når "del obj" imidlertid udføres for at slette et objekt, kaldes destruktormetoden automatisk.

Eksempel 2

class Text:
def __del__(self):
print "Text deleted"
a = Text()
del a
a = Text()
b = a
del b
del a

Produktion:

Tekst er en klasse, “a” er objektreference til klassen. “B” lokal kopi af henvisningen “a”. Så når b slettes, kaldes metoden ikke, da den simpelthen indeholder den lokale kopi.

Fordelene ved Destructor i Python

Som nævnt er destruktoren ikke så meget brugt i python, så meget som den bruges i Java, C ++. Imidlertid forbliver konceptet det samme. Her er nogle fordele ved at bruge det i programmer:

  • Unødvendige objekter slettes automatisk. Dette frigør hukommelsesområdet, der er kendt som affaldssamling.
  • Fordelen ligger også i det faktum, at det påberåber sig automatisk.

Visse trin, der skal tages vare på, mens du bruger destructor:

1. Python kender ikke den rækkefølge, hvor ødelæggelse af genstande vil være mere sikkert, som kan indeholde cirkulære referencer til hinanden. På grund af dette anbefaler folk at bruge “tæt” eksplicit efter hver funktion. Men i tilfælde af undtagelser, bliver styring af tæt metode vanskelig. Derfor er det bedre at bruge destruktorer, og husk de cykliske referencer.

2. Cykliske referencer, hvis det ikke håndteres godt, er chancerne for utætte abstraktioner plus dårligt design.
Det bedste er: ressourcer skal håndteres af det laveste niveau objekt i klassen.

3. Når nogen har et stort behov for at bruge cykliske referencer til objekter i kompleks kode, giver Python en god løsning på det i form af modulnavn: weakref. Det betyder, at der refereres til svage referencer, som i sidste ende hjælper med at implementere cache og ikke længere holde det store objekt i live. Når et stort objekt ikke er i live, betyder det, at det vises i cachen.

Lad os se det gennem en lille kode for at få klar forståelse:

Kode:

import weakref
class C:
def method(self):
print("Hi!method called!")
c = C()
r = weakref.ref(c)
print(c)
print(r)

Produktion:

Som man kan se, er “r” en svag henvisning til objektet “c”.

Hvis vi laver en metode henvisning til “r” som c2 = r (). Så "c" og "c2" skal være de samme, fordi det refererer til det samme. Se eksemplet vist nedenfor:

I tilfælde af sletning af hovedobjektet mister referenceobjektet sin eksistens. Se eksemplet vist nedenfor:

Som man kan bemærke, er print (r ()) -resultaterne “Ingen”. I det tilfælde:
gc.collect () resulterer i 0.

4. __del__ bør ikke forveksles med del in python. __del__ er en speciel metode til en klasse, der er destruktor, og "del" bruges til at ødelægge en variabel, der er defineret i python-miljøet. Begge er to helt forskellige ting.

Synes godt om:

xx = 10
del xx

Konklusion

Når vi har gennemgået ovenstående indhold, kan vi sige, at konstruktører og destruktører er en vigtig del af Python. Destructor spiller en central rolle i styringen af ​​hukommelsen, hvor den udfører mange rengøringsopgaver på objekter, der bruges til programmering. At håndtere små programmer kan muligvis ikke give dig det faktiske billede bagved at bruge destruktorer. Mens man beskæftiger sig med produktionsniveau-programmer eller komplekse kodelinjer, kan destruktørernes betydning imidlertid forstås klart, da hukommelsesforbrug bliver meget vigtig der. At huske tanken om cyklisk reference kan absolut føre til et godt design, mens du arbejder med destruktører.

Anbefalede artikler

Dette er en guide til Destructor i Python. Her diskuterer vi syntaks, fordele sammen med de forskellige eksempler på python destructor. Du kan også se på de følgende artikler for at lære mere -

  1. Abstrakt klasse i Python
  2. Python Editors
  3. Python Break-erklæring
  4. Udskiftning i Python
  5. Eksempler på bytte i PHP
  6. Break Statement i JavaScript
  7. Komplet guide til Destructor i PHP med eksempler

Kategori: