Maison >développement back-end >Tutoriel Python >Comment implémenter un modèle Singleton en Python pour la journalisation ?
Les singletons sont un modèle de conception qui garantit qu'une seule instance d'une classe est créée. Voici des recommandations pour implémenter des singletons en Python :
Utiliser une métaclasse
Cette méthode offre plusieurs avantages :
class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) return cls._instances[cls] class Logger(object): __metaclass__ = Singleton
Corrections d'autres méthodes
Dans le message d'origine, l'implémentation de la classe de base est incorrecte. Cela nécessite de référencer des _instances sur la classe, d'utiliser super() et de corriger new pour qu'il soit une méthode statique qui prend la classe comme argument.
Quand utiliser Singletons
Bien qu'il y ait des débats sur leur opportunité, les singletons conviennent à certains situations :
Dans le scénario présenté, où la journalisation est le cas d'utilisation, le modèle singleton est un choix approprié.
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!