Introduktion till Destructor i Python
Konstruktörer och förstörare är två viktiga begrepp inom python. Konstruktörer kallas när objektets klass skapas. Destruktorer kallas emellertid när objektet för en klass förstörs. Därför är det inte fel att säga, konstruktörer, är motsatsen till förstörare. Python, som är ett objektorienterat programmeringsspråk, är konstruktörer och destruktorer också en del av detta språk.
Destruktorer används inte i python lika mycket som Java och C ++. Men att veta om det gör en ännu starkare bas i python.
Destruktorer kan bevisas mycket användbara när det gäller sanitetsarbetet i programmet. Till exempel: släppa de använda resurserna innan du kommer ut ur programmet som att släppa minnen, stänga filer etc.
Nyckelord som används för att definiera Destructor är: __del __ () nyckelord:
Syntax:
def __del__(self):
#destructor body
Som man kan se är __del__ det nyckelord som används för att definiera destruktor. När det kallas raderas all hänvisning till det objektet, även känt som sopor.
Exempel på Destructor i Python
Låt oss se olika exempel på förstörare i python, för att få en bättre förståelse:
Exempel 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:
“Livsmedelsaffär” är den klass som definieras med sina speciella metoder: konstruktör & destruktor.
Så man kan se när objektet för klassen “Livsmedel” har skapats. Den åberopar automatiskt __init__, som är klassens konstruktör. Men när "del obj" körs för att radera ett objekt, kommer destruktormetoden att ringas automatiskt.
Exempel 2
class Text:
def __del__(self):
print "Text deleted"
a = Text()
del a
a = Text()
b = a
del b
del a
Produktion:
Text är en klass, "a" är objektreferens till klassen. "B" lokal kopia av referensen "a". Så när b tas bort ropas inte metoden, eftersom den helt enkelt rymmer den lokala kopian.
Fördelarna med Destructor i Python
Som sagt tidigare är destruktorn inte så mycket som används i python så mycket som den används i Java, C ++. Men konceptet förblir detsamma. Här är några fördelar med att använda det i program:
- Objekt som inte behövs raderas automatiskt. Detta frigör minnesutrymmet som kallas Garbage collection.
- Fördelen ligger också i det faktum att den åberopar automatiskt.
Vissa steg som bör tas om hand när du använder destruktor:
1. Python vet inte i vilken ordning förstörelse av objekt blir säkrare som kan innehålla cirkulära referenser till varandra. På grund av detta rekommenderar människor att använda ”stänga” uttryckligen efter varje funktion. Men om undantag inträffar blir hanteringen av nära metoden besvärlig. Därför är det bättre att använda destruktorer med tanke på de cykliska referenserna.
2. Cykliska referenser om det inte hanteras väl, chanserna är läckta abstraktioner plus dålig design.
Det bästa är: resurser ska hanteras av klassens lägsta objekt.
3. När någon har stort behov av att använda cykliska referenser till objekt i komplex kod, ger Python en bra lösning på det i form av modulnamn: weakref. Det innebär att referensen tillhandahåller svaga referenser, vilket i slutändan hjälper till att implementera cache och inte längre hålla det stora objektet levande. När ett stort objekt inte lever, betyder det att det visas i cachen.
Låt oss se det genom en liten kod för att få klar förståelse:
Koda:
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 "r" är en svag referens till objektet "c".
Om vi gör en metod hänvisar vi till “r” som c2 = r (). Då ska "c" och "c2" vara desamma, för hänvisar till samma. Se exemplet som visas nedan:
Vid borttagning av huvudobjektet förlorar referensobjektet sin existens. Se exemplet som visas nedan:
Som man kan märka, är resultatet (r ()) resultatet ”Inget”. Isåfall:
gc.collect () kommer att bli 0.
4. __del__ bör inte bli förvirrad med del in python. __del__ är en speciell metod för en klass som är förstörare och "del" används för att förstöra en variabel som definieras i pythonmiljön. Båda är två helt olika saker.
Tycka om:
xx = 10
del xx
Slutsats
Efter att ha gått igenom innehållet ovan kan vi säga att konstruktörer och destruktorer är en avgörande del av Python. Destructor spelar en viktig roll i hanteringen av minnet, där den utför många rengöringsuppgifter på objekt som används i programmering. Att hantera små program kanske inte ger dig den faktiska bilden bakom att använda destruktorer. Men när man arbetar med produktionsnivåprogram eller komplexa kodlinjer, kan förstörarnas betydelse förstås tydligt, eftersom minnesanvändning blir mycket viktig där. Om man tänker på idén om cyklisk referens kan det absolut leda till god design när man arbetar med destruktorer.
Rekommenderade artiklar
Detta är en guide till Destructor i Python. Här diskuterar vi syntaxen, fördelar tillsammans med de olika exemplen på python destructor. Du kan också titta på följande artiklar för att lära dig mer -
- Abstrakt klass i Python
- Python Editors
- Python Break-uttalande
- Byta i Python
- Exempel på byte i PHP
- Break Statement i JavaScript
- Komplett guide till Destructor i PHP med exempel