Voici mon problème. J'ai créé une classe readonly assez lourde faisant beaucoup d'appels de base de données avec une méthode "d'usine" statique. Le but de cette méthode est d'éviter de détruire la base de données en regardant dans un pool d'objets déjà créés si une instance identique du même objet (même type, mêmes paramètres init) existe déjà.Comment créer des instances d'une classe à partir d'une méthode statique?
Si quelque chose a été trouvé, la méthode va juste le retourner. Aucun problème. Mais sinon, comment puis-je créer une instance de l'objet, d'une manière qui fonctionne avec l'héritage?
>>> class A(Object):
>>> @classmethod
>>> def get_cached_obj(self, some_identifier):
>>> # Should do something like `return A(idenfier)`, but in a way that works
>>> class B(A):
>>> pass
>>> A.get_cached_obj('foo') # Should do the same as A('foo')
>>> A().get_cached_obj('foo') # Should do the same as A('foo')
>>> B.get_cached_obj('bar') # Should do the same as B('bar')
>>> B().get_cached_obj('bar') # Should do the same as B('bar')
Merci.
Pourquoi si complexe? Pourquoi ne pas simplement 'getInstance (A, 'foo')' ou 'getInstance (b, 'bar')'? –
La classe réelle est un peu plus compliquée que celle de l'exemple. Cette partie était juste celle qui manquait, en fait :) – Pierre