BTW, as I mentioned in a previous comment, I believe this would be more plainly written as type(self).__new__(), to emphasize that you are constructing the object without initializing it. (There is a explanation of __new__'s behaviour at http://www.python.org/2.2/descrintro.html#__new__).
There is also now documentation in the standard location:
http://docs.python.org/ref/customization.html
And just to clarify Michael's point here, writing this as __new__ means that __init__ is not called twice:
py> class C(object): ... def __new__(cls): ... print '__new__' ... return super(C, cls).__new__(cls) ... def __init__(self): ... print '__init__' ... py> c = C() __new__ __init__ py> c2 = type(c)(); c2.__init__() __new__ __init__ __init__ py> c3 = type(c).__new__(C); c3.__init__() __new__ __init__
But definitely check the docs for more information on __new__. Some of the interworkings are kind of subtle.
STeVe -- http://mail.python.org/mailman/listinfo/python-list