How to create instances of a class from a static method?

Posted by Pierre on Stack Overflow See other posts from Stack Overflow or by Pierre
Published on 2010-03-11T16:24:05Z Indexed on 2010/03/11 20:39 UTC
Read the original article Hit count: 288

Filed under:

Hello.

Here is my problem. I have created a pretty heavy readonly class making many database calls with a static "factory" method. The goal of this method is to avoid killing the database by looking in a pool of already-created objects if an identical instance of the same object (same type, same init parameters) already exists.

If something was found, the method will just return it. No problem. But if not, how may I create an instance of the object, in a way that works with inheritance?

>>> 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')

Thanks.

© Stack Overflow or respective owner

Related posts about python