Úvod do Destructor v Pythonu
Konstruktory a ničitelé jsou v Pythonu dva důležité pojmy. Konstruktory se nazývají, když je vytvořen objekt třídy. Destruktory se však nazývají, když je předmět třídy zničen. Není tedy špatné říkat, Konstruktorové, jsou opakem Destruktorů. Součástí tohoto jazyka je také Python, objektově orientovaný programovací jazyk, Constructors and Destructors.
Destruktory se v pythonu nepoužívají tolik jako Java a C ++. Ale s vědomím, že to dělá ještě silnější základnu v Pythonu.
Destruktory se mohou ukázat jako velmi užitečné, pokud jde o zdravou práci programu. Například: uvolnění použitých zdrojů před vyjetím z programu, jako je uvolnění vzpomínek, uzavření souborů atd.
Klíčové slovo použité k definici Destructor je: __del __ () klíčové slovo:
Syntax:
def __del__(self):
#destructor body
Jak je vidět, __del__ je klíčové slovo používané k definování destruktoru. Když je zavolán, bude odstraněn veškerý odkaz na tento objekt, který se také nazývá sběr odpadu.
Příklady Destructor v Pythonu
Podívejme se na různé příklady destruktoru v pythonu, abychom lépe porozuměli:
Pří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ýstup:
„Potraviny“ je třída definovaná svými speciálními metodami: konstruktor a destruktor.
Je tedy vidět, jakmile je vytvořen objekt třídy „Potraviny“. Automaticky vyvolá __init__, což je konstruktér třídy. Když se však „del obj“ spustí, aby se odstranil objekt, metoda destruktoru se nazývá automaticky.
Příklad č. 2
class Text:
def __del__(self):
print "Text deleted"
a = Text()
del a
a = Text()
b = a
del b
del a
Výstup:
Text je třída, „a“ je odkaz na objekt na třídu. „B“ místní kopie odkazu „a“. Když je tedy b smazáno, metoda se nezvolá, protože jednoduše drží lokální kopii.
Výhody Destructor v Pythonu
Jak již bylo řečeno, destruktor se v pythonu nepoužívá tolik, jako v Java, C ++. Koncept však zůstává stejný. Zde jsou některé výhody jeho použití v programech:
- Nepotřebné objekty se automaticky odstraní. Tím se uvolní paměťový prostor, který se nazývá Garbage collection.
- Výhoda spočívá také v tom, že se vyvolává automaticky.
Určité kroky, které by měly být při použití destruktoru ošetřeny:
1. Python neví, v jakém pořadí budou ničit objekty bezpečnější a které mohou držet kruhové odkazy na sebe. Z tohoto důvodu lidé doporučují používat „blízko“ explicitně po každé funkci. V případě výjimek však bude řízení metody blízké obtížné. Proto je použití destruktorů lepší, s ohledem na cyklické odkazy.
2. Cyklické odkazy, pokud se s nimi nezachází dobře, jsou šance na netěsnosti a špatný design.
Nejlepší věc je: prostředky by měly být zpracovávány objektem nejnižší úrovně třídy.
3. Když někdo zoufale potřebuje používat cyklické odkazy na objekty ve složitém kódu, poskytuje Python dobré řešení ve formě názvu modulu: slabof. To znamená, že na referenta jsou poskytovány slabé odkazy, což nakonec pomáhá při implementaci mezipaměti a již neudržuje živý velký objekt. Pokud velký objekt není naživu, znamená to, že se objeví v mezipaměti.
Podívejme se na to malým kódem, abychom získali přehledné porozumění:
Kód:
import weakref
class C:
def method(self):
print("Hi!method called!")
c = C()
r = weakref.ref(c)
print(c)
print(r)
Výstup:
Jak je vidět, „r“ je slabý odkaz na objekt „c“.
Pokud uděláme odkaz na metodu „r“ jako c2 = r (). Pak by „c“ a „c2“ měly být stejné, protože se na ně odkazuje. Viz níže uvedený příklad:
V případě výmazu hlavního objektu ztratí referenční objekt svou existenci. Viz níže uvedený příklad:
Jak si lze všimnout, výsledky tisku (r ()) jsou „Žádné“. V tom případě:
gc.collect () povede k 0.
4. __del__ by neměl být zaměňován s del v pythonu. __del__ je speciální metoda třídy, která je destruktor a „del“ se používá ke zničení proměnné definované v prostředí pythonu. Obě jsou dvě zcela odlišné věci.
Jako:
xx = 10
del xx
Závěr
Po projetí výše uvedeného obsahu můžeme říci, že konstruktéři a destruktory jsou rozhodující součástí Pythonu. Destruktor hraje klíčovou roli při správě paměti, kde provádí mnoho úklidových úkolů u objektů používaných v programování. Při práci s malými programy vám nemusí poskytnout skutečný obraz za použití destruktorů. Při práci s programy na úrovni výroby nebo s jakýmikoli složitými řádky kódu však může být význam destruktorů jasně pochopen, protože využití paměti se zde stává velmi důležité. Mít na paměti myšlenku cyklického odkazu může při práci s destruktory absolutně vést k dobrému designu.
Doporučené články
Toto je průvodce Destructorem v Pythonu. Zde diskutujeme syntaxi, výhody spolu s různými příklady destruktoru pythonu. Další informace naleznete také v následujících článcích -
- Abstraktní třída v Pythonu
- Editory Pythonu
- Prohlášení o zlomení Pythonu
- Výměna v Pythonu
- Příklady swapování v PHP
- Prohlášení o zlomu v JavaScript
- Kompletní průvodce Destructorem v PHP s příklady