Úvod do Destructor v Pythone
Konštruktory a Destruktory sú v Pythone dva dôležité pojmy. Konštruktory sa volajú pri vytvorení objektu triedy. Destruktory sa však volajú, keď je zničený predmet triedy. Preto nie je zlé hovoriť, že Konštruktori sú opakom Destruktorov. Súčasťou tohto jazyka je aj Python, objektovo orientovaný programovací jazyk, Constructors and Destructors.
Destruktory sa v pythone nepoužívajú, rovnako ako Java a C ++. Ale s vedomím, že to robí ešte silnejšiu základňu v Pythone.
Ničitelia sa môžu ukázať ako veľmi užitoční, pokiaľ ide o rozumnú prácu programu. Napríklad: uvoľnenie použitých zdrojov pred vyjdením z programu, ako napríklad uvoľnenie spomienok, zatvorenie súborov atď.
Kľúčové slovo použité na definíciu Destructor je: __del __ () kľúčové slovo:
syntaxe:
def __del__(self):
#destructor body
Ako je vidieť, __del__ je kľúčové slovo, ktoré sa používa na definíciu deštruktora. Po zavolaní sa odstráni všetok odkaz na tento objekt, ktorý sa tiež nazýva zber odpadu.
Príklady Destruktora v Pythone
Pozrime sa na rôzne príklady deštruktora v pythone, aby sme lepšie porozumeli:
Príklad č. 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
Výkon:
„Potraviny“ je trieda definovaná svojimi špeciálnymi metódami: constructor & destructor.
Akonáhle bude vytvorený objekt triedy „Potraviny“, uvidíme. Automaticky vyvolá __init__, čo je konštruktor triedy. Keď sa však spustí „del obj“, aby sa odstránil objekt, metóda destruktora sa nazýva automaticky.
Príklad č. 2
class Text:
def __del__(self):
print "Text deleted"
a = Text()
del a
a = Text()
b = a
del b
del a
Výkon:
Text je trieda, „a“ je odkaz na objekt triedy. „B“ miestna kópia tohto odkazu „a“. Keď je teda b odstránené, metóda sa nezvolá, pretože jednoducho drží lokálnu kópiu.
Výhody Destructor v Pythone
Ako už bolo povedané, deštruktor sa v pythone nepoužíva tak často ako v Java, C ++. Koncept však zostáva rovnaký. Tu je niekoľko výhod jeho použitia v programoch:
- Nepotrebné objekty sa automaticky odstránia. Uvoľní sa tak pamäťový priestor, ktorý sa nazýva Odpadky.
- Výhoda spočíva aj v tom, že sa vyvoláva automaticky.
Počas používania deštruktora je potrebné postupovať podľa určitých krokov:
1. Python nepozná poradie, v ktorom budú ničiace objekty bezpečnejšie a ktoré dokážu navzájom držať kruhové odkazy. Z tohto dôvodu ľudia odporúčajú používať „blízko“ výslovne po každej funkcii. V prípade výnimiek sa však správa blízkych metód stáva problematickou. Preto je použitie deštruktorov lepšie, berúc do úvahy cyklické odkazy.
2. Cyklické odkazy, ak sa s nimi nezaobchádza dobre, je pravdepodobné, že dôjde k úniku abstrakcií a zlému designu.
Najlepšia vec je: zdroje by mali byť spracované objektom najnižšej úrovne triedy.
3. Ak niekto zúfalo potrebuje cyklické odkazy na objekty v zložitom kóde, poskytuje Python dobré riešenie vo forme názvu modulu: slabof. To znamená, že na referenta sa poskytujú slabé odkazy, čo nakoniec pomáha pri implementácii vyrovnávacej pamäte a už neudržiava živý veľký objekt. Ak veľký objekt nežije, znamená to, že sa objaví v pamäti cache.
Pozrime sa na to malým kódom, aby sme získali prehľadné pochopenie:
kód:
import weakref
class C:
def method(self):
print("Hi!method called!")
c = C()
r = weakref.ref(c)
print(c)
print(r)
Výkon:
Ako je vidieť, „r“ je slabý odkaz na objekt „c“.
Ak urobíme metódu, odkazujeme na „r“ ako c2 = r (). Potom by „c“ a „c2“ mali byť rovnaké, pretože sa na ne odkazuje. Pozrite si nasledujúci príklad:
V prípade vymazania hlavného objektu referenčný objekt stráca svoju existenciu. Pozrite si nasledujúci príklad:
Ako je možné si všimnúť, výsledky tlače (r ()) sú „Žiadne“. V tom prípade:
Výsledkom gc.collect () bude 0.
4. __del__ by sa nemal zamieňať s del v pythone. __del__ je špeciálna metóda triedy, ktorá je deštruktorom a „del“ sa používa na zničenie premennej definovanej v prostredí pythonu. Obidve sú dve úplne odlišné veci.
Páči sa mi to:
xx = 10
del xx
záver
Po preštudovaní vyššie uvedeného obsahu môžeme povedať, že konštruktory a deštruktory sú rozhodujúcou súčasťou Pythonu. Destruktor hrá kľúčovú úlohu pri správe pamäte, kde vykonáva mnoho čistiacich úloh na objektoch používaných v programovaní. Zaobchádzanie s malými programami vám nemusí poskytnúť skutočný obraz za použitia deštruktorov. Pri práci s programami na úrovni výroby alebo s akýmikoľvek zložitými riadkami kódu však môže dôjsť k jasnému pochopeniu významu deštruktorov, pretože využitie pamäte sa stáva veľmi dôležitým. Mať na pamäti myšlienku cyklického odkazu môže pri práci s deštruktormi úplne viesť k dobrému dizajnu.
Odporúčané články
Toto je sprievodca Destructorom v Pythone. Tu diskutujeme syntax, výhody spolu s rôznymi príkladmi deštruktora pythonu. Ďalšie informácie nájdete aj v nasledujúcich článkoch -
- Abstraktná trieda v Pythone
- Editory Pythonu
- Vyhlásenie o zlomení Pythonu
- Výmena v Pythone
- Príklady výmeny v PHP
- Prehlásenie o zlome v JavaScripte
- Kompletný sprievodca Destructor v PHP s príkladmi