Es scheint viele Möglichkeiten der Definition zu geben Einzelnes in Python. Gibt es eine einheitliche Meinung auf Stack Overflow?
Antwort
Zu viele Anzeigen?
mkm
Punkte
1405
In Fällen, in denen Sie die oben beschriebene metaklassenbasierte Lösung nicht wollen und Ihnen der einfache funktionsdekoratorbasierte Ansatz nicht gefällt (z.B. weil in diesem Fall statische Methoden auf der Singleton-Klasse nicht funktionieren), funktioniert dieser Kompromiss:
class singleton(object):
"""Singleton decorator."""
def __init__(self, cls):
self.__dict__['cls'] = cls
instances = {}
def __call__(self):
if self.cls not in self.instances:
self.instances[self.cls] = self.cls()
return self.instances[self.cls]
def __getattr__(self, attr):
return getattr(self.__dict__['cls'], attr)
def __setattr__(self, attr, value):
return setattr(self.__dict__['cls'], attr, value)
- See previous answers
- Weitere Antworten anzeigen