diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2015-01-15 05:56:10 (GMT) |
---|---|---|
committer | Ethan Furman <ethan@stoneleaf.us> | 2015-01-15 05:56:10 (GMT) |
commit | 119479f70550cf4323ba1eb8cdda88a47681362b (patch) | |
tree | 86d150de1c02f593e3b4b5eb550397a79c2f4280 /Doc | |
parent | 72c2a0f60a7f15d89a53d96804312c353be7fdf2 (diff) | |
download | cpython-119479f70550cf4323ba1eb8cdda88a47681362b.zip cpython-119479f70550cf4323ba1eb8cdda88a47681362b.tar.gz cpython-119479f70550cf4323ba1eb8cdda88a47681362b.tar.bz2 |
Issue20467: clarify __init__'s role
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/reference/datamodel.rst | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index 160af30..e5e53c1 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -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) |