Introduksjon til Destructor in Python
Konstruktører og destruktører er to viktige konsepter i python. Konstruktører kalles når objektet til en klasse opprettes. Destruktorer blir imidlertid kalt når gjenstanden til en klasse blir ødelagt. Derfor er det ikke galt å si, konstruktører, er det motsatte av destruktører. Python, som er et objektorientert programmeringsspråk, er Constructors and Destructors også en del av dette språket.
Destruktorer brukes ikke i python så mye som Java og C ++. Men å vite det gir en enda sterkere base i python.
Destruktører kan bli vist seg veldig nyttige når det gjelder sanitysarbeid i programmet. For eksempel: slippe de brukte ressursene før du kommer ut av programmet, for eksempel å gi ut minner, lukke filer osv.
Nøkkelord som brukes til å definere Destructor er: __del __ () nøkkelord:
syntaks:
def __del__(self):
#destructor body
Som man kan se, er __del__ nøkkelordet som brukes til å definere destructor. Når det heter, blir alle henvisninger til det objektet slettet, også kjent som søppelsamling.
Eksempler på Destructor i Python
La oss se forskjellige eksempler på destructor i python, for å 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
Produksjon:
“Dagligvare” er klassen definert med sine spesielle metoder: konstruktør og destruktør.
Så man kan se når objektet for klassen “Dagligvare” er opprettet. Den påkaller automatisk __init__, som er konstruktøren av klassen. Imidlertid når “del obj” blir kjørt for å slette et objekt, blir destruktormetoden automatisk oppringt.
Eksempel 2
class Text:
def __del__(self):
print "Text deleted"
a = Text()
del a
a = Text()
b = a
del b
del a
Produksjon:
Tekst er en klasse, "a" er objektreferanse til klassen. “B” lokal kopi av referansen “a”. Så når b blir slettet, blir ikke metoden kalt, ettersom den ganske enkelt holder den lokale kopien.
Fordelene med Destructor i Python
Som sagt tidligere er ikke destruktoren så mye brukt i python så mye som den brukes i Java, C ++. Imidlertid forblir konseptet det samme. Her er noen fordeler ved å bruke det i programmer:
- Unødvendige objekter blir slettet automatisk. Dette frigjør minneområdet som er kjent som Garbage collection.
- Fordelen ligger også i det faktum at den påberoper seg automatisk.
Visse trinn som bør tas vare på, mens du bruker destructor:
1. Python vet ikke i hvilken rekkefølge ødeleggelse av gjenstander vil være tryggere som kan inneholde sirkulære referanser til hverandre. På grunn av dette anbefaler folk å bruke “Lukk” eksplisitt etter hver funksjon. Men i tilfelle unntak oppstår, blir det vanskelig å håndtere nærmetoden. Derfor er det bedre å bruke destruktører, og husk de sykliske referansene.
2. Sykliske referanser hvis det ikke blir håndtert bra, er sjansen stor for utette abstraksjoner, pluss dårlig design.
Det beste er: ressursene skal håndteres av det laveste nivå objektet i klassen.
3. Når noen har stort behov for å bruke sykliske referanser til objekter i kompleks kode, gir Python en god løsning på det i form av modulenavn: weakref. Det betyr at svake referanser blir gitt til referenten, noe som til slutt hjelper med å implementere cache og ikke lenger holder det store objektet i live. Når en stor gjenstand ikke er i live, betyr det at den vises i hurtigbufferen.
La oss se det gjennom en liten kode for å 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)
Produksjon:
Som man kan se “r” er en svak referanse til objektet “c”.
Hvis vi lager en metode refererer vi til “r” som c2 = r (). Da "c" og "c2" skal være de samme, fordi refererer til det samme. Se eksempelet nedenfor:
Ved sletting av hovedobjektet mister referanseobjektet sin eksistens. Se eksempelet nedenfor:
Som en kan legge merke til, er utskriftsresultater (r ()) “Ingen”. I så fall:
gc.collect () vil resultere i 0.
4. __del__ skal ikke bli forvirret med del in python. __del__ er en spesiell metode for en klasse som er destructor og "del" brukes til å ødelegge en variabel definert i python-miljøet. Begge er to helt forskjellige ting.
Som:
xx = 10
del xx
Konklusjon
Etter å ha gått gjennom innholdet ovenfor, kan vi si at konstruktører og destruktører er en avgjørende del av Python. Destructor spiller en sentral rolle i styringen av minnet, der den utfører mange rengjøringsoppgaver på objekter som brukes i programmering. Å håndtere små programmer vil kanskje ikke gi deg det faktiske bildet bak bruk av destruktører. Imidlertid, mens du arbeider med programmer på produksjonsnivå eller komplekse kodelinjer, kan destruktorenes betydning forstås tydelig, ettersom minnebruk blir veldig viktig der. Å huske ideen om syklisk referanse kan absolutt føre til god design mens du arbeider med destruktører.
Anbefalte artikler
Dette er en guide til Destructor i Python. Her diskuterer vi syntaks, fordeler sammen med de forskjellige eksemplene på python destructor. Du kan også se på følgende artikler for å lære mer -
- Abstrakt klasse i Python
- Python Editors
- Python Break-uttalelse
- Bytting av Python
- Eksempler på bytte i PHP
- Brudderklæring i JavaScript
- Komplett guide til Destructor i PHP med eksempler