__init__ is the initialiser

Gregory Ewing greg.ewing at canterbury.ac.nz
Mon Feb 3 00:23:03 CET 2014

Mark Lawrence wrote:
> Called when the instance is created. The arguments are those passed to 
> the class constructor expression. If a base class has an __init__() 
> method, the derived class’s __init__() method, if any, must explicitly 
> call it to ensure proper initialization of the base class part of the 
> instance; for example: BaseClass.__init__(self, [args...]). As a special 
> constraint on constructors, no value may be returned; doing so will 
> cause a TypeError to be raised at runtime.
> "
> Should the wording of the above be changed to clearly reflect that we 
> have an initialiser here and that __new__ is the constructor?

The first instance of "constructor" in that paragraph refers
to the expression used to instantiate an object, e.g.
'MyClass(foo, blarg)', which is fine.

The second instance might be clearer if it said "as a special
constraint on the __init__ method" and avoided the word
"constructor" altogether.

Generally I think it would be better to talk about "the
__new__ method" and "the __init__ method", and not call
either of them a constructor.


More information about the Python-list mailing list