Pusztító a Pythonban Különböző példák annak előnyeivel

Tartalomjegyzék:

Anonim

Bevezetés a pusztítóba a Pythonban

Az építők és a pusztítók két fontos fogalom a pythonban. Az építőket egy osztály objektumának létrehozásakor hívják. A pusztítókat azonban akkor hívják, amikor egy osztály tárgya megsemmisül. Ezért nem helytelen azt mondani, hogy a konstruktorok ellentétesek a pusztítókkal. A Python, amely objektum-orientált programozási nyelv, a Constructors és Destructors ennek a nyelvnek a része.

A pusztítókat nem a pythonban használják, mint a Java és a C ++. De tudva, hogy ez még erősebb alapot nyújt a pythonban.

A pusztítók nagyon hasznosnak bizonyulhatnak, amikor a program józanul dolgozik. Például: a felhasznált erőforrások felszabadítása a programból való kilépés előtt, például memóriák felszabadítása, fájlok bezárása stb.

A Destructor meghatározásához használt kulcsszó: __del __ () kulcsszó:

Szintaxis:

def __del__(self):
#destructor body

Mint látható, a __del__ a kulcsszó a pusztító meghatározásához. Amikor meghívják, az adott objektumra vonatkozó összes hivatkozás törlődik, amely más néven szemétgyűjtés.

Példák a pusztítóra a Pythonban

Nézzünk meg különféle példákat a pusztítóra a pythonban a jobb megértés érdekében:

1. példa

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

Kimenet:

A „bolt” az az osztály, amelyet speciális módszereivel határoztak meg: kivitelező és romboló.

Tehát láthatjuk, miután létrehozták az „Élelmiszerboltok” osztály tárgyát. Automatikusan meghívja __init__-t, amely az osztály konstruktora. Amikor azonban a „del obj” végrehajtásra kerül egy objektum törlése érdekében, a pusztító módszer automatikusan meghívásra kerül.

2. példa

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

Kimenet:

A szöveg egy osztály, az „a” az objektumra való hivatkozás az osztályra. A „b” hivatkozás helyi példánya. Tehát, ha b törlésre kerül, a metódust nem hívják meg, mivel egyszerűen csak a helyi példányt tartja.

A Destructor előnyei a Pythonban

Mint korábban már említettük, a pusztítót nem annyira használják a pythonban, mint amennyit Java, C ++. A koncepció azonban változatlan marad. Íme néhány előnye annak, ha azt a programokban használjuk:

  • A nem szükséges objektumok automatikusan törlődnek. Ez felszabadítja a Garbage collection néven ismert memóriaterületet.
  • Az előnye abban is rejlik, hogy automatikusan megindul.

Bizonyos lépések, amelyeket ügyelni kell a pusztító használatára:

1. A Python nem ismeri az objektumok pusztításának biztonságosabb sorrendjét, amelyek körkörös hivatkozásokat tartalmazhatnak egymásra. Emiatt az emberek azt javasolják, hogy minden funkció után kifejezetten használják a „bezárást”. De kivételek esetén a szoros módszer kezelése nehézkes lesz. Ezért jobb a destruktúrák használata, szem előtt tartva a ciklikus referenciákat.

2. Ciklikus referenciák, ha nem kezelik jól, esélyük lehet szivárgásos absztrakciókra, valamint rossz tervezésre.
A legjobb dolog: az erőforrásokat az osztály legalacsonyabb szintű objektumának kell kezelnie.

3. Ha valakinek szigorúan szüksége van az összetett kódban lévő objektumokra vonatkozó ciklikus hivatkozások használatára, a Python jó megoldást kínál ehhez a modulnév formájában: nõrk. Ez azt jelenti, hogy gyenge hivatkozásokat kapunk a referenshez, ami végső soron segítséget nyújt a gyorsítótár megvalósításában és a nagy tárgy életben tartásának elkerülésében. Ha egy nagy objektum nem él, az azt jelenti, hogy megjelenik a gyorsítótárban.

Nézzük meg egy kis kódon keresztül, hogy érthetőbb megértést kapjunk:

Kód:

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

Kimenet:

Amint láthatjuk, hogy az „r” egy gyenge hivatkozás a „c” objektumra.

Ha egy módszerre hivatkozunk „r” -re, például c2 = r (). Akkor a „c” és a „c2” azonosnak kell lennie, mert ugyanazra utal. Lásd az alábbi példát:

A főobjektum törlése esetén a referenciaobjektum elveszíti létezését. Lásd az alábbi példát:

Mint észrevehető, a (r ()) nyomtatás eredménye „Nincs”. Ebben az esetben:
A gc.collect () értéke 0 lesz.

4. A __del__-t nem szabad összetéveszteni a python-del. Az __del__ egy osztály speciális módszere, amely pusztító és a „del” -et arra használják, hogy elpusztítsa a python környezetben meghatározott változót. Mindkettő két teljesen különböző dolog.

Tetszik:

xx = 10
del xx

Következtetés

A fenti tartalom áttekintése után mondhatjuk, hogy az építők és a destruktorok a Python kritikus részét képezik. A Destructor kulcsszerepet játszik a memória kezelésében, ahol sok tisztítási feladatot végez a programozásban használt objektumokon. Kisebb programokkal foglalkozva előfordulhat, hogy nem kap a valódi képet a destruktorok mögött. Miközben termelési szintű programokkal vagy bármilyen komplex kódvonallal foglalkozunk, a destruktorok fontossága egyértelműen megérthető, mivel a memóriahasználat ott nagyon fontos szerepet játszik. A ciklikus referencia gondolatának szem előtt tartása feltétlenül a jó tervezéshez vezethet, amikor a destruktorokkal dolgozik.

Ajánlott cikkek

Ez egy útmutató a Destructorhoz Pythonban. Itt tárgyaljuk a szintaxist, az előnyöket, valamint a python-pusztító különféle példáit. A következő cikkeket is megnézheti további információkért -

  1. Absztrakt osztály Pythonban
  2. Python szerkesztők
  3. Python Break nyilatkozat
  4. Csere a Pythonban
  5. Példák a csereprogramokra a PHP-ben
  6. Break kijelentés a JavaScript-ben
  7. A PHP pusztítójának teljes útmutatója, példákkal