logo

Python'daki yıkıcılar

Kullanıcılar nesneyi yok etmek için Destructor'ı çağırır. Python'da geliştiriciler, C++ dilinde ihtiyaç duyulan kadar yıkıcılara ihtiyaç duymayabilir. Bunun nedeni Python'un işlevi bellek yönetimini otomatik olarak yöneten bir çöp toplayıcıya sahip olmasıdır.

Bu yazımızda Python'daki yıkıcıların nasıl çalıştığını ve kullanıcıların bunları ne zaman kullanabileceğini tartışacağız.

yay aracı paketi

______() işlevi yıkıcı işlev olarak kullanılır Piton . Kullanıcı arayabilir ______() nesnenin tüm referansları silindiğinde işlev görür ve çöp toplanmış hale gelir.

Sözdizimi:

 def __del__(self): # the body of destructor will be written here. 

Kullanıcılar ayrıca, nesne referansın dışına çıktığında veya kod sona erdiğinde nesnelere yapılan referansın da silindiğini unutmamalıdır.

Aşağıdaki örnekte, yıkıcının otomatik olarak dahil olması için nesnenin tüm referanslarını silmek için __del__() fonksiyonunu ve del anahtar sözcüğünü kullanacağız.

Örneğin:

 # we will illustrate destructor function in Python program # we will create Class named Animals class Animals: # we will initialize the class def __init__(self): print('The class called Animals is CREATED.') # now, we will Call the destructor def __del__(self): print('The destructor is called for deleting the Animals.') object = Animals() del object 

Çıktı:

 The class called Animals is CREATED. The destructor is called for deleting the Animals. 

Açıklama -

bir dizeyi int'ye nasıl dönüştürebilirim?

Yukarıdaki kodda, nesneye yapılan referanslar silindiğinde veya program sonlandırıldıktan sonra yıkıcı çağrılmıştır. Bu, nesnenin referans sayısının, nesne kapsam dışına çıktığında sıfır olacağı anlamına gelir. Bunu bir sonraki örneği göstererek açıklayacağız.

Yıkıcının programın bitiminden sonra çağrıldığını da görebiliriz.

Örnek:

 # We will create Class named Animals class Animals: # Initialize the class def __init__(self): print('The class called Animals is CREATED.') # now, we will Call the destructor def __del__(self): print('The destructor is called for deleting the Animals.') def Create_object(): print('we are creating the object') object = Animals() print('we are ending the function here') return object print('we are calling the Create_object() function now') object = Create_object() print('The Program is ending here') 

Çıktı:

 we are calling the Create_object() function now we are creating the object The class called Animals is CREATED. we are ending the function here The Program is ending here The destructor is called for deleting the Animals. 

Şimdi bir sonraki örnekte, function() çağrıldığında, kendisini Lion sınıfına aktaran Zebra sınıfının örneğini yaratacağını, bu sınıfın da daha sonra Zebra sınıfına referansı ayarlayacağını göreceğiz ve sonuç olarak dairesel referans.

Örnek:

 class Animals: # we will initialize the class def __init__(self): print(' The class called Animals is CREATED.') class Lion: def __init__(self, zebraa): self.zebra = zebraa class Zebra: def __init__(self): self.lion = Lion(self) def __del__(self): print('Zebra is dead') def function(): zebra = Zebra() function() 

Çıktı:

 Zebra is dead 

Genel olarak bu tür döngüsel referansları tespit etmek için kullanılan Python'un Çöp toplayıcısı da referansı kaldıracaktır. Ancak yukarıdaki örnekte, bu öğeyi toplanılamaz olarak işaretlemek için özel yıkıcı kullanıldı.

Basit bir ifadeyle bu, çöp toplayıcının nesnenin imha edilmesi gereken sırayı bilmediği için onları terk ettiği anlamına gelir. Yani kullanıcıların örnekleri bu döngüsel referansın içinde yer alıyorsa uygulama çalıştığı sürece hafızada kayıtlı kalacaktır.

koç aktör

Çözüm

Bu yazımızda Python'da Destructor'ların işlevini ve referansları hafızadan silinmiş nesneleri silmek için kullanıcıların bunları nasıl kullanabileceğini anlattık.