On Thu, 15 Mar 2007 04:33:01 +0000, Paulo da Silva wrote:

> I would like to implement something like this:
> 
> class C1:
>       def __init__(self,xxx):
>               if ... :
>                       self.foo = foo
>                       self.bar = bar
>               else:
>                       self=C1.load(xxx)
> 
>       def load(xxx):
>               ...
>               return instance_of_C1
>       load=staticmethod(load)
> 
> This does not seem correct. How can I do it?



Others have come up with other solutions which may or may not work, but
perhaps you can adapt this to do what you want.


class CachedClass(object):
    """Class that recycles cached instances.
    """
    _cache = {}
    def __new__(cls, ID):
        print "Calling constructor __new__ ..."
        if cls._cache.has_key(ID):
            print "Returning cached instance..."
            return cls._cache[ID]
        else:
            print "Creating new instance..."
            obj = super(CachedClass, cls).__new__(cls, ID)
            cls._cache[ID] = obj
            return obj
    def __init__(self, ID):
        print "Calling constructor __init__ ..."
        self.ID = ID



-- 
Steven

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to