Lors de la destruction de quelle classe? Je pensais que tu as dit module?
Votre module reste actif jusqu'à ce que l'interpréteur s'arrête. vous pouvez ajouter quelque chose à courir à ce moment-là en utilisant le module "atexit":
import atexit
atexit.register(myfunction)
EDIT: Sur la base de vos commentaires.
Puisque vous ne le voulez pas en tant que destructeur, ma réponse ci-dessus est correcte. Il suffit de def une autre fonction (ou méthode statique si vous le souhaitez) et l'enregistrer avec l'atexit:
def close_database():
proceed_to_close()
import atexit
atexit.register(close_database)
maintenant une note rapide sur votre définition.
Vous avez dit que la classe n'a aucune instance. Alors pourquoi en faire un cours? Pourquoi ne pas définir les fonctions au niveau du module à la place? Les modules sont des objets de première classe, mis en cache et importés qu'une seule fois ...
exemple, au lieu de définir database.py
:
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)
et en utilisant:
from database import DataBase
DataBase.execute_some_query(query)
Vous pouvez le faire à la place sur database.py
:
def execute_some_query(query):
code_here()
some_code()
def close_database():
proceed_to_close()
import atexit ; atexit.register(close_database)
Et l'utiliser comme est:
import database
database.execute_some_query(query)
Ou mieux encore: Utilisez sqlalchemy et éviter tout ce mal de créer votre propre interface de base de données.
Qu'entendez-vous par "suppression de module"? Quand pensez-vous que cela arrive? –
nous avons une classe simple qui a seulement des fonctions membres statiques et a besoin de nettoyer la connexion de base de données lors du déchargement du module. espérait qu'il y aurait une méthode __del__ soit pour les modules ou les classes qui n'ont pas d'instances? – Dan
@Dan: S'il vous plaît mettre à jour la question avec de nouvelles informations; ne commente pas ta propre question. Aussi, quel est le cas d'utilisation pour décharger un module? Pourquoi voudriez-vous faire cela? –