Деструктор у Питхон-у - Различити примери са његовим предностима

Преглед садржаја:

Anonim

Увод у Деструцтор у Питхон-у

Конструктори и деструктори два су важна концепта питхона. Конструктори се позивају када се створи објект класе. Међутим, Деструктори се позивају када је објект класе уништен. Дакле, није погрешно рећи, конструктори, супротно од Деструктора. Питхон, који је објектно оријентисан програмски језик, Цонструцторс и Деструцторс такође су део овог језика.

Деструктори се не користе у питхону колико Јава и Ц ++. Али ако знамо да то чини још јачу основу у питону.

Деструктори се могу показати врло корисним када је у питању здравствени рад програма. На пример: ослобађање коришћених ресурса пре изласка из програма попут ослобађања меморија, затварања датотека итд.

Кључна реч која се користи за дефинисање Деструктора је: кључна реч __дел __ ():

Синтакса:

def __del__(self):
#destructor body

Као што се види, __дел__ је кључна реч која се користи за дефинисање деструктора. Када се позове, брише се свако позивање на тај објект који је такође познат као смеће.

Примери Деструктора у Питхону

Погледајмо различите примере деструктора у питхону да бисмо боље разумели:

Пример # 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

Излаз:

„Трговина намирницама“ је класа која је дефинисана посебним методама: конструктор и деструктор.

Дакле, једном се може видети објекат класе "Гроцери". Аутоматски се позива на __инит__, који је конструктор класе. Међутим, када се „дел обј“ изврши ради брисања објекта, метода деструктора аутоматски се позива.

Пример бр. 2

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

Излаз:

Текст је класа, „а“ је референца објекта на класу. „Б“ локална копија референце „а“. Дакле, када се б обрише, метода се не позива, јер једноставно садржи локалну копију.

Предности Деструктора у Питхону

Као што је речено раније, деструктор се у питону не користи толико колико се користи у Јава, Ц ++. Међутим, концепт остаје исти. Ево неколико предности његове употребе у програмима:

  • Непотребни се објекти аутоматски бришу. Овим се ослобађа меморијски простор који је познат као Гарбаге цоллецтион.
  • Предност је и у томе што се аутоматски позива.

Одређени кораци на које треба водити рачуна користећи деструктор:

1. Питхон не зна редослед којим ће уништавање објеката бити сигурније да могу имати кружне референце једни на друге. Због тога људи препоручују експлицитно коришћење „затварања“ након сваке функције. Али у случају изузетака, управљање методом затварања постаје проблематично. Стога је употреба деструктора боља, имајући у виду цикличне референце.

2. Цикличке референце ако се са њима не поступа добро, шансе су за непропусне апстракције и лош дизајн.
Најбоља ствар је: ресурсима треба руковати објекат најниже разине класе.

3. Када је некоме оштро потребна употреба цикличких референци на објекте у сложеном коду, Питхон пружа добро решење за то у облику назива модула: слабреф. То значи да се референту дају слабе референце, што на крају помаже у имплементацији кеша и више не одржава велики објект живим. Када велики објект није жив, то значи да се појављује у кешу.

Да видимо кроз мали код да бисмо разумели:

Шифра:

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

Излаз:

Као што се може видети „р“ је слаба референца на објект „ц“.

Ако направимо методу референцу на „р“ као што је ц2 = р (). Тада би „ц“ и „ц2“ требали бити исти, јер се односи на исто. Погледајте пример приказан у наставку:

У случају брисања главног објекта, референтни објект губи постојање. Погледајте пример приказан у наставку:

Као што се може приметити, резултати штампања (р ()) су „Нема“. У том случају:
гц.цоллецт () ће резултирати 0.

4. __дел__ се не треба мешати са дел ин питхон. __дел__ је посебна метода класе која је деструктор и „дел“ се користи за уништавање променљиве дефинисане у питхон окружењу. Обе су две потпуно различите ствари.

Као:

xx = 10
del xx

Закључак

Након што прођемо кроз горњи садржај, можемо рећи да су конструктори и деструктори пресудни део Питхона. Деструктор има кључну улогу у управљању меморијом, где обавља бројне задатке чишћења на објектима који се користе у програмирању. Бављење малим програмима можда вам не даје стварну слику кориштења деструктора. Међутим, док се бавимо програмима на нивоу производње или било којим сложеним линијама кода, значај деструктора може се јасно разумети, јер употреба меморије тамо постаје веома важна. Имајући на уму идеја цикличке референце може апсолутно довести до доброг дизајна током рада са деструкторима.

Препоручени чланци

Ово је водич за Деструцтор у Питхон-у. Овде смо расправљали о синтакси, предностима заједно са различитим примерима деструктора питона. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Сажетак класе у Питхон-у
  2. Питхон Едиторс
  3. Изјава о прекиду Питхон-а
  4. Замјена у Питхон-у
  5. Примери замене у ПХП-у
  6. Изјава о прекиду у ЈаваСцрипт-у
  7. Комплетан водич за Деструктор у ПХП-у са примерима