bonjour a tous,
je souhaiterais utiliser le DP singleton en Python, et apres quelque recherche, j'ai pu trouver une methode elegante utilisant les decorator :
Cependant imaginez la situation suivante : j'ai une classe mere, et plusieurs classes filles. Je voudrais donc que mon principe du singleton s'applique a toutes les classes filles. J'ai donc tendance a mettre le @singleton sur la classe mere.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 def singleton(cls): instances = {} def getInstance(): if cls not in instances: instances[cls] = cls() return instances[cls] return getInstance @singleton class myClass: pass
Malheureusement, l'heritage devient impossible :
Apres quelques recherches, il s'avere que c'est parce que ma classe mere devient une fonction aux yeux de Python. Et allez dire a python que je veux heriter d'une fonction...TypeError: Error when calling the metaclass bases
function() argument 1 must be code, not str
Est ce qu'il y a une maniere elegante de contourenr le probleme, ou alors est ce que je vais devoir placer le @singleton sur chaque classe fille?
Merci
Partager