diff options
| author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2022-11-07 18:55:58 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-07 18:55:58 (GMT) |
| commit | 857f6a44a5781be9e29ccb4df0ada98aea64126c (patch) | |
| tree | c9c42f1645dc932d2f82e7f216db1b52c5696972 | |
| parent | 3dbf2708f595875846dab906ecd34d9585b4b56b (diff) | |
| download | cpython-857f6a44a5781be9e29ccb4df0ada98aea64126c.zip cpython-857f6a44a5781be9e29ccb4df0ada98aea64126c.tar.gz cpython-857f6a44a5781be9e29ccb4df0ada98aea64126c.tar.bz2 | |
[3.11] gh-96746: Docs: Clear up Py_TPFLAGS_DISALLOW_INSTANTIATION inheritance (GH-99002) (GH-99212)
gh-96746: Docs: Clear up Py_TPFLAGS_DISALLOW_INSTANTIATION inheritance (GH-99002)
The flag is not inherited, but its effect -- a NULL tp_new -- is.
Drop hints for people who come here wanting to “disallow instantiation”.
(cherry picked from commit 1438b779971605e516bd0a4051a704d6ffbbd58d)
Co-authored-by: Petr Viktorin <encukou@gmail.com>
| -rw-r--r-- | Doc/c-api/typeobj.rst | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst index af0d760..0233a36 100644 --- a/Doc/c-api/typeobj.rst +++ b/Doc/c-api/typeobj.rst @@ -1213,6 +1213,17 @@ and :c:type:`PyType_Type` effectively act as defaults.) **Inheritance:** This flag is not inherited. + However, subclasses will not be instantiable unless they provide a + non-NULL :c:member:`~PyTypeObject.tp_new` (which is only possible + via the C API). + + .. note:: + + To disallow instantiating a class directly but allow instantiating + its subclasses (e.g. for an :term:`abstract base class`), + do not use this flag. + Instead, make :c:member:`~PyTypeObject.tp_new` only succeed for + subclasses. .. versionadded:: 3.10 |
