bpo-31564: Update typing documentation (GH-3696)
Mention that ``NewType`` can derive from another ``NewType``.
This commit is contained in:
parent
d6238a76c6
commit
039b25d8fd
|
@ -111,8 +111,7 @@ More precisely, the expression ``some_value is Derived(some_value)`` is always
|
|||
true at runtime.
|
||||
|
||||
This also means that it is not possible to create a subtype of ``Derived``
|
||||
since it is an identity function at runtime, not an actual type. Similarly, it
|
||||
is not possible to create another :func:`NewType` based on a ``Derived`` type::
|
||||
since it is an identity function at runtime, not an actual type::
|
||||
|
||||
from typing import NewType
|
||||
|
||||
|
@ -121,9 +120,16 @@ is not possible to create another :func:`NewType` based on a ``Derived`` type::
|
|||
# Fails at runtime and does not typecheck
|
||||
class AdminUserId(UserId): pass
|
||||
|
||||
# Also does not typecheck
|
||||
However, it is possible to create a :func:`NewType` based on a 'derived' ``NewType``::
|
||||
|
||||
from typing import NewType
|
||||
|
||||
UserId = NewType('UserId', int)
|
||||
|
||||
ProUserId = NewType('ProUserId', UserId)
|
||||
|
||||
and typechecking for ``ProUserId`` will work as expected.
|
||||
|
||||
See :pep:`484` for more details.
|
||||
|
||||
.. note::
|
||||
|
|
Loading…
Reference in New Issue