[Tutor] When to use __new__ vs. __init__ ?

Jerry Hill malaclypse2 at gmail.com
Fri Apr 18 19:36:51 CEST 2008


On Fri, Apr 18, 2008 at 12:08 PM,  <python at bdurham.com> wrote:
> Any guidelines on when to use __new__ vs. __init__ when sub-classing?

Use __new__ when you need to control the creation of a new instance.
Use __init__ when you need to control initialization of a new instance.

__new__ is the first step of instance creation.  It's called first,
and is responsible for returning a new instance of your class.  In
contrast, __init__ doesn't return anything; it's only responsible for
initializing the instance after it's been created.

In general, you shouldn't need to override __new__ unless you're
subclassing an immutable type like str, int, unicode or tuple.

Some references:
The description of new style classes goes into some depth about how
instance creation works, including examples of overriding __new__ and
__init__. http://www.python.org/download/releases/2.2/descrintro/

The reference manual has a section on class customization, but I don't
think it goes into enough depth to really answer your question:
http://docs.python.org/ref/customization.html


-- 
Jerry


More information about the Tutor mailing list