Bonjour,
Je suis en train de tester 2 solutions pour faire un Singleton : par m�taclasse, et par d�corateur.
Si la m�taclasse fonctionne bien, j'ai un truc bizarre avec le d�corateur :
car j'obtiens :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 def singleton(cls): instances = {} def getinstance(): if cls not in instances: instances[cls] = cls() return instances[cls] return getinstance @singleton class MyClass(object): def __init__(self): super(MyClass, self).__init__() self.a = 1 MyClass()
Quelqu'un peut-il m'expliquer ce qui se passe, exactement ? Je n'arrive pas � suivre le cheminement de python lors de la cr�ation/initialisation de la classe... J'imagine qu'une fois compris �a, la r�ponse coule se source
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 Traceback (most recent call last): File "deco.py", line 17, in <module> MyClass() File "deco.py", line 5, in getinstance instances[cls] = cls() File "deco.py", line 13, in __init__ super(MyClass, self).__init__() TypeError: must be type, not function
Merci d'avance.
Partager