Issue20467: clarify __init__'s role
authorEthan Furman <ethan@stoneleaf.us>
Thu, 15 Jan 2015 05:56:10 +0000 (21:56 -0800)
committerEthan Furman <ethan@stoneleaf.us>
Thu, 15 Jan 2015 05:56:10 +0000 (21:56 -0800)
Doc/reference/datamodel.rst

index 160af305d87cf6394de462bfb2add3a56eb21862..e5e53c118e8c5e724ec6b82577392186daa785ef 100644 (file)
@@ -1081,13 +1081,17 @@ Basic customization
 
    .. index:: pair: class; constructor
 
-   Called when the instance is created.  The arguments are those passed to the
-   class constructor expression.  If a base class has an :meth:`__init__` method,
-   the derived class's :meth:`__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 :exc:`TypeError`
-   to be raised at runtime.
+   Called after the instance has been created (by :meth:`__new__`), but before
+   it is returned to the caller.  The arguments are those passed to the
+   class constructor expression.  If a base class has an :meth:`__init__`
+   method, the derived class's :meth:`__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...])``.
+
+   Because :meth:`__new__` and :meth:`__init__` work together in constructing
+   objects (:meth:`__new__` to create it, and :meth:`__init__` to customise it),
+   no non-``None`` value may be returned by :meth:`__init__`; doing so will
+   cause a :exc:`TypeError` to be raised at runtime.
 
 
 .. method:: object.__del__(self)