7
votes

Assurez-vous qu'une seule instance d'une classe est exécutée

J'ai une classe sous-jacente que je veux placer dans certains codes. Je veux seulement que cela soit instancié ou commencé une fois pour une application donnée bien que cela puisse être appelé plusieurs fois. Le problème avec le code ci-dessous est que LowClass est démarré encore et encore. Je veux seulement qu'il démarre une fois par test. XXX

Merci d'avoir souligné mon problème !!


1 commentaires

Avec le nom propre dans la main - "singleton" - il y a maintenant un certain nombre de questions discutant de ce sujet à ce sujet (comme Alex Martelli's Borg Standing, et alii). Votez pour étrier maintenant que l'intérêt ait approprié terme pour le modèle de conception.


5 Réponses :


2
votes

Recherchez "Singleton modèle". Cela ressemble à Python que vous avez affaire, vous pourriez donc avoir à rechercher un peu plus fort. Maintenant, il y a beaucoup d'exemples en C ++.


0 commentaires

3
votes

Ce dont vous avez besoin est d'implémenter le singleton modèle de conception en python

J'ai trouvé ce Mise en œuvre J'espère que cela aide


0 commentaires

9
votes

0 commentaires

1
votes

Je crois que le problème du code montré est que vous définissez self.active = true . Cela créera un attribut pour l'instance et définir que true , alors que je pense que vous souhaitez définir l'actif de la classe elle-même sur vrai . Ainsi, au lieu de self.active = true , essayez auto .__ classe __. Actif = true . .


0 commentaires

2
votes

Lorsque vous importez un module à Python, il est naturel singleton. Par example, dans util.py, vous avez:

from util import g_my_obj


1 commentaires

Beaucoup plus clair et plus facile que d'autres réponses et n'a pas besoin d'une classe personnalisée pour l'atteindre