Hangi sınıfı tahrip ederken? Modülü söyledin mi?
Modülünüz, tercüman durana kadar yatar. Eğer "atexit" modülü kullanarak o anda çalışmasına şey ekleyebilirsiniz:
import atexit
atexit.register(myfunction)
EDIT: Yorumlarınızı dayanarak.
Bunu bir yok edici olarak istemediğinizden, yukarıdaki yanıtım doğrudur. Sadece (isterseniz veya statik yöntemi) Başka bir fonksiyonu def ve atexit ile kayıt: Artık
def close_database():
proceed_to_close()
import atexit
atexit.register(close_database)
hızlı bir not tanımına.
Sınıfın hiçbir örneği olmadığını söylemiştiniz. Öyleyse neden ders yapıyorsunuz? Fonksiyonları neden modül seviyesinde tanımlamıyorsunuz?
class DataBase(object):
@staticmethod
def execute_some_query(query):
code_here()
some_code()
@staticmethod
def close_database():
proceed_to_close()
import atexit ; atexit.register(DataBase.close_database)
ve kullanma:
from database import DataBase
DataBase.execute_some_query(query)
Sen database.py
yerine bu yapabileceğini modülleri
Örnek yerine database.py
tanımlama ... birinci sınıf nesneleri önbelleğe ve yalnızca bir kez ithal vardır :
def execute_some_query(query):
code_here()
some_code()
def close_database():
proceed_to_close()
import atexit ; atexit.register(close_database)
daha iyisi
import database
database.execute_some_query(query)
Veya: Kullanım sqlalchemy ve kendi veritabanı arabirimi oluşturma tüm bu zahmete kaçınmaktır.
siz "modül silme" ile ne demek istiyorsunuz? Bunun ne zaman olduğunu düşünüyorsun? –
sadece statik üye fonksiyonlarına sahip basit bir sınıfa sahip ve modülü boşaltırken veritabanı bağlantısını temizlememiz gerekiyor. Örnekleri olmayan modüller veya sınıflar için bir __del__ yöntemi olacağını umuyordu? – Dan
@Dan: Lütfen soruyu yeni bilgilerle güncelleyin; kendi sorunuz hakkında yorum yapma. Ayrıca, bir modülün boşaltılması için kullanım durumu nedir? Neden bunu yaptın? –