mirror of
https://github.com/python/cpython.git
synced 2025-11-03 11:23:31 +00:00
Improve docs of PEP 604 Union (#24301)
This commit is contained in:
parent
d65b9033d6
commit
5f77dee056
3 changed files with 20 additions and 19 deletions
|
|
@ -870,19 +870,27 @@ are always available. They are listed here in alphabetical order.
|
||||||
class>`) subclass thereof. If *object* is not
|
class>`) subclass thereof. If *object* is not
|
||||||
an object of the given type, the function always returns ``False``.
|
an object of the given type, the function always returns ``False``.
|
||||||
If *classinfo* is a tuple of type objects (or recursively, other such
|
If *classinfo* is a tuple of type objects (or recursively, other such
|
||||||
tuples), return ``True`` if *object* is an instance of any of the types.
|
tuples) or a :ref:`types-union` of multiple types, return ``True`` if
|
||||||
|
*object* is an instance of any of the types.
|
||||||
If *classinfo* is not a type or tuple of types and such tuples,
|
If *classinfo* is not a type or tuple of types and such tuples,
|
||||||
a :exc:`TypeError` exception is raised.
|
a :exc:`TypeError` exception is raised.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.10
|
||||||
|
*classinfo* can be a :ref:`types-union`.
|
||||||
|
|
||||||
|
|
||||||
.. function:: issubclass(class, classinfo)
|
.. function:: issubclass(class, classinfo)
|
||||||
|
|
||||||
Return ``True`` if *class* is a subclass (direct, indirect or :term:`virtual
|
Return ``True`` if *class* is a subclass (direct, indirect or :term:`virtual
|
||||||
<abstract base class>`) of *classinfo*. A
|
<abstract base class>`) of *classinfo*. A
|
||||||
class is considered a subclass of itself. *classinfo* may be a tuple of class
|
class is considered a subclass of itself. *classinfo* may be a tuple of class
|
||||||
objects, in which case every entry in *classinfo* will be checked. In any other
|
objects or a :ref:`types-union`, in which case every entry in *classinfo*
|
||||||
|
will be checked. In any other
|
||||||
case, a :exc:`TypeError` exception is raised.
|
case, a :exc:`TypeError` exception is raised.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.10
|
||||||
|
*classinfo* can be a :ref:`types-union`.
|
||||||
|
|
||||||
|
|
||||||
.. function:: iter(object[, sentinel])
|
.. function:: iter(object[, sentinel])
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5022,8 +5022,10 @@ enables cleaner type hinting syntax compared to :data:`typing.Union`.
|
||||||
str | None == typing.Optional[str]
|
str | None == typing.Optional[str]
|
||||||
|
|
||||||
.. describe:: isinstance(obj, union_object)
|
.. describe:: isinstance(obj, union_object)
|
||||||
|
.. describe:: issubclass(obj, union_object)
|
||||||
|
|
||||||
Calls to :func:`isinstance` are also supported with a union object::
|
Calls to :func:`isinstance` and :func:`issubclass` are also supported with a
|
||||||
|
union object::
|
||||||
|
|
||||||
>>> isinstance("", int | str)
|
>>> isinstance("", int | str)
|
||||||
True
|
True
|
||||||
|
|
@ -5036,21 +5038,6 @@ enables cleaner type hinting syntax compared to :data:`typing.Union`.
|
||||||
File "<stdin>", line 1, in <module>
|
File "<stdin>", line 1, in <module>
|
||||||
TypeError: isinstance() argument 2 cannot contain a parameterized generic
|
TypeError: isinstance() argument 2 cannot contain a parameterized generic
|
||||||
|
|
||||||
.. describe:: issubclass(obj, union_object)
|
|
||||||
|
|
||||||
Calls to :func:`issubclass` are also supported with a union object::
|
|
||||||
|
|
||||||
>>> issubclass(bool, int | str)
|
|
||||||
True
|
|
||||||
|
|
||||||
However, union objects containing :ref:`parameterized generics
|
|
||||||
<types-genericalias>` cannot be used::
|
|
||||||
|
|
||||||
>>> issubclass(bool, bool | list[str])
|
|
||||||
Traceback (most recent call last):
|
|
||||||
File "<stdin>", line 1, in <module>
|
|
||||||
TypeError: issubclass() argument 2 cannot contain a parameterized generic
|
|
||||||
|
|
||||||
The user-exposed type for the union object can be accessed from
|
The user-exposed type for the union object can be accessed from
|
||||||
:data:`types.Union` and used for :func:`isinstance` checks. An object cannot be
|
:data:`types.Union` and used for :func:`isinstance` checks. An object cannot be
|
||||||
instantiated from the type::
|
instantiated from the type::
|
||||||
|
|
|
||||||
|
|
@ -193,7 +193,13 @@ Type hints can now be written in a more succinct manner::
|
||||||
return number ** 2
|
return number ** 2
|
||||||
|
|
||||||
|
|
||||||
See :pep:`604` for more details.
|
This new syntax is also accepted as the second argument to :func:`isinstance`
|
||||||
|
and :func:`issubclass`::
|
||||||
|
|
||||||
|
>>> isinstance(1, int | str)
|
||||||
|
True
|
||||||
|
|
||||||
|
See :ref:`types-union` and :pep:`604` for more details.
|
||||||
|
|
||||||
(Contributed by Maggie Moss and Philippe Prados in :issue:`41428`.)
|
(Contributed by Maggie Moss and Philippe Prados in :issue:`41428`.)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue