Singleton Pattern est un modèle de conception logicielle couramment utilisé. L'objectif principal de ce modèle est de garantir qu'une seule instance d'une certaine classe existe. Les objets Singleton sont utiles lorsque vous souhaitez qu'une seule instance d'une certaine classe apparaisse dans l'ensemble du système.
En Python, nous pouvons utiliser diverses méthodes pour implémenter le modèle singleton (apprentissage recommandé : Tutoriel vidéo Python)
En fait, le module Python est un mode singleton naturel, car lorsque le module est importé pour la première fois, un fichier .pyc sera généré. Lors de sa deuxième importation, le fichier .pyc sera généré. être chargé directement au lieu de Le code du module sera à nouveau exécuté. Par conséquent, il suffit de définir les fonctions et les données pertinentes dans un module pour obtenir un objet singleton.
Utiliser des décorateurs
def Singleton(cls): _instance = {} def _singleton(*args, **kargs): if cls not in _instance: _instance[cls] = cls(*args, **kargs) return _instance[cls] return _singleton @Singleton class A(object): a = 1 def __init__(self, x=0): self.x = x a1 = A(2) a2 = A(3)
Utiliser des classes, Lorsque nous implémentons un singleton, afin de garantir la sécurité des threads, nous avons besoin à Ajout de verrou interne
On sait que lorsqu'on instancie un objet, on exécute d'abord la méthode __new__ de la classe (quand on ne l'écrit pas, object.__new__ est appelé par défaut) pour instancier l'objet ; Exécutez ensuite la méthode __init__ de la classe pour initialiser l'objet. Sur cette base, nous pouvons implémenter le mode singleton
en utilisant __metaclass__ (métaclasse)
Pour plus d'articles techniques liés à Python, veuillez visiter la colonne Tutoriel Python pour apprendre !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!