"newseater" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hello. I need to be able to control how objects are created. Sometimes > when creating an object, i want to reuse another object instead. I've > searched for factory method implementations and singleton > implementations. They were too much of a hack! > > My first attempt of doing this was to play around with the __new__() > method. But i didn't quite succed. Then i came up with making a static > method which can create my instances or re-use other instances. > However, the below code I cannot get to work :( > > class Creator > def createInstance(cls, *args, **kwargs): > anewinstance = cls.__new__(cls, *args, **kwargs) > anewinstance.__init__(*args, **kwargs) > > return anewinstance > createInstance = staticmethod(createInstance) > > > can anyone help??
__new__ is the proper way to do this, but making it work is a bit tricky. If you could post the code you tried to get to work for __new__(), we could critique it. The current documentation is in 3.3.1 of the Python Reference Manual (Python 2.4 version). In earlier versions, there were a couple of other documents that did a better (IMO) job of explaining things. The trick is that __new__ must return an instance. It can be a newly created instance (and the doc shows how to do this) or an existing instance of any new style class. By the way - when you post code, please use spaces for indentation. There are a number of popular mail clients that don't play fair with tabs, and people using these clients will frequently ignore code that isn't properly indented. John Roth -- http://mail.python.org/mailman/listinfo/python-list