[Tutor] When to use __new__ vs. __init__ ?
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.
The description of new style classes goes into some depth about how
instance creation works, including examples of overriding __new__ and
The reference manual has a section on class customization, but I don't
think it goes into enough depth to really answer your question:
More information about the Tutor