Merge from 3.3: Add a str class entry to the string section (issue #16209).

This commit also moves the documentation for the str built-in function to
the new class entry.  Links to :class:`str` now go to the class entry with
the string methods immediately afterwards.
This commit is contained in:
Chris Jerdonek 2012-11-28 01:45:15 -08:00
commit 16459e8b16
6 changed files with 79 additions and 57 deletions

View file

@ -160,11 +160,11 @@ Object Protocol
a string similar to that returned by :c:func:`PyObject_Repr` in Python 2. a string similar to that returned by :c:func:`PyObject_Repr` in Python 2.
Called by the :func:`ascii` built-in function. Called by the :func:`ascii` built-in function.
.. index:: string; PyObject_Str (C function)
.. c:function:: PyObject* PyObject_Str(PyObject *o) .. c:function:: PyObject* PyObject_Str(PyObject *o)
.. index:: builtin: str
Compute a string representation of object *o*. Returns the string Compute a string representation of object *o*. Returns the string
representation on success, *NULL* on failure. This is the equivalent of the representation on success, *NULL* on failure. This is the equivalent of the
Python expression ``str(o)``. Called by the :func:`str` built-in function Python expression ``str(o)``. Called by the :func:`str` built-in function

View file

@ -982,13 +982,13 @@ done. This can be done using the :c:func:`PyErr_Fetch` and
} }
.. index::
single: string; object representation
builtin: repr
Object Presentation Object Presentation
------------------- -------------------
.. index::
builtin: repr
builtin: str
In Python, there are two ways to generate a textual representation of an object: In Python, there are two ways to generate a textual representation of an object:
the :func:`repr` function, and the :func:`str` function. (The :func:`print` the :func:`repr` function, and the :func:`str` function. (The :func:`print`
function just calls :func:`str`.) These handlers are both optional. function just calls :func:`str`.) These handlers are both optional.

View file

@ -14,7 +14,7 @@ are always available. They are listed here in alphabetical order.
:func:`all` :func:`dir` :func:`hex` :func:`next` :func:`slice` :func:`all` :func:`dir` :func:`hex` :func:`next` :func:`slice`
:func:`any` :func:`divmod` :func:`id` :func:`object` :func:`sorted` :func:`any` :func:`divmod` :func:`id` :func:`object` :func:`sorted`
:func:`ascii` :func:`enumerate` :func:`input` :func:`oct` :func:`staticmethod` :func:`ascii` :func:`enumerate` :func:`input` :func:`oct` :func:`staticmethod`
:func:`bin` :func:`eval` :func:`int` :func:`open` :func:`str` :func:`bin` :func:`eval` :func:`int` :func:`open` |func-str|_
:func:`bool` :func:`exec` :func:`isinstance` :func:`ord` :func:`sum` :func:`bool` :func:`exec` :func:`isinstance` :func:`ord` :func:`sum`
:func:`bytearray` :func:`filter` :func:`issubclass` :func:`pow` :func:`super` :func:`bytearray` :func:`filter` :func:`issubclass` :func:`pow` :func:`super`
:func:`bytes` :func:`float` :func:`iter` :func:`print` |func-tuple|_ :func:`bytes` :func:`float` :func:`iter` :func:`print` |func-tuple|_
@ -34,6 +34,7 @@ are always available. They are listed here in alphabetical order.
.. |func-memoryview| replace:: ``memoryview()`` .. |func-memoryview| replace:: ``memoryview()``
.. |func-set| replace:: ``set()`` .. |func-set| replace:: ``set()``
.. |func-list| replace:: ``list()`` .. |func-list| replace:: ``list()``
.. |func-str| replace:: ``str()``
.. |func-tuple| replace:: ``tuple()`` .. |func-tuple| replace:: ``tuple()``
.. |func-range| replace:: ``range()`` .. |func-range| replace:: ``range()``
@ -521,13 +522,13 @@ are always available. They are listed here in alphabetical order.
The float type is described in :ref:`typesnumeric`. The float type is described in :ref:`typesnumeric`.
.. index::
single: __format__
single: string; format() (built-in function)
.. function:: format(value[, format_spec]) .. function:: format(value[, format_spec])
.. index::
pair: str; format
single: __format__
Convert a *value* to a "formatted" representation, as controlled by Convert a *value* to a "formatted" representation, as controlled by
*format_spec*. The interpretation of *format_spec* will depend on the type *format_spec*. The interpretation of *format_spec* will depend on the type
of the *value* argument, however there is a standard formatting syntax that of the *value* argument, however there is a standard formatting syntax that
@ -1238,44 +1239,12 @@ are always available. They are listed here in alphabetical order.
.. _func-str: .. _func-str:
.. function:: str(object='') .. function:: str(object='')
str(object=b'', encoding='utf-8', errors='strict') str(object=b'', encoding='utf-8', errors='strict')
:noindex:
Return a :ref:`string <textseq>` version of *object*. If *object* is not Return a :class:`str` version of *object*. See :func:`str` for details.
provided, returns the empty string. Otherwise, the behavior of ``str()``
depends on whether *encoding* or *errors* is given, as follows.
If neither *encoding* nor *errors* is given, ``str(object)`` returns ``str`` is the built-in string :term:`class`. For general information
:meth:`object.__str__() <object.__str__>`, which is the "informal" or nicely about strings, see :ref:`textseq`.
printable string representation of *object*. For string objects, this is
the string itself. If *object* does not have a :meth:`~object.__str__`
method, then :func:`str` falls back to returning
:meth:`repr(object) <repr>`.
.. index::
single: buffer protocol; str() (built-in function)
single: bytes; str() (built-in function)
If at least one of *encoding* or *errors* is given, *object* should be a
:class:`bytes` or :class:`bytearray` object, or more generally any object
that supports the :ref:`buffer protocol <bufferobjects>`. In this case, if
*object* is a :class:`bytes` (or :class:`bytearray`) object, then
``str(bytes, encoding, errors)`` is equivalent to
:meth:`bytes.decode(encoding, errors) <bytes.decode>`. Otherwise, the bytes
object underlying the buffer object is obtained before calling
:meth:`bytes.decode`. See :ref:`binaryseq` and
:ref:`bufferobjects` for information on buffer objects.
Passing a :class:`bytes` object to :func:`str` without the *encoding*
or *errors* arguments falls under the first case of returning the informal
string representation (see also the :option:`-b` command-line option to
Python). For example::
>>> str(b'Zoot!')
"b'Zoot!'"
``str`` is a built-in :term:`type`. For more information on the string
type and its methods, see the :ref:`textseq` and :ref:`string-methods`
sections. To output formatted strings, see the :ref:`string-formatting`
section. In addition, see the :ref:`stringservices` section.
.. function:: sum(iterable[, start]) .. function:: sum(iterable[, start])

View file

@ -1348,7 +1348,7 @@ range(2, 1, 3)`` or ``range(0, 3, 2) == range(0, 4, 2)``.)
.. index:: .. index::
single: string; text sequence type single: string; text sequence type
single: str() (built-in function); (see also string) single: str (built-in class); (see also string)
object: string object: string
.. _textseq: .. _textseq:
@ -1376,8 +1376,8 @@ See :ref:`strings` for more about the various forms of string literal,
including supported escape sequences, and the ``r`` ("raw") prefix that including supported escape sequences, and the ``r`` ("raw") prefix that
disables most escape sequence processing. disables most escape sequence processing.
Strings may also be created from other objects with the built-in Strings may also be created from other objects using the :class:`str`
function :func:`str`. constructor.
Since there is no separate "character" type, indexing a string produces Since there is no separate "character" type, indexing a string produces
strings of length 1. That is, for a non-empty string *s*, ``s[0] == s[0:1]``. strings of length 1. That is, for a non-empty string *s*, ``s[0] == s[0:1]``.
@ -1394,13 +1394,61 @@ multiple fragments.
once again permitted on string literals. It has no effect on the meaning once again permitted on string literals. It has no effect on the meaning
of string literals and cannot be combined with the ``r`` prefix. of string literals and cannot be combined with the ``r`` prefix.
.. index::
single: string; str (built-in class)
.. class:: str(object='')
str(object=b'', encoding='utf-8', errors='strict')
Return a :ref:`string <textseq>` version of *object*. If *object* is not
provided, returns the empty string. Otherwise, the behavior of ``str()``
depends on whether *encoding* or *errors* is given, as follows.
If neither *encoding* nor *errors* is given, ``str(object)`` returns
:meth:`object.__str__() <object.__str__>`, which is the "informal" or nicely
printable string representation of *object*. For string objects, this is
the string itself. If *object* does not have a :meth:`~object.__str__`
method, then :func:`str` falls back to returning
:meth:`repr(object) <repr>`.
.. index::
single: buffer protocol; str (built-in class)
single: bytes; str (built-in class)
If at least one of *encoding* or *errors* is given, *object* should be a
:class:`bytes` or :class:`bytearray` object, or more generally any object
that supports the :ref:`buffer protocol <bufferobjects>`. In this case, if
*object* is a :class:`bytes` (or :class:`bytearray`) object, then
``str(bytes, encoding, errors)`` is equivalent to
:meth:`bytes.decode(encoding, errors) <bytes.decode>`. Otherwise, the bytes
object underlying the buffer object is obtained before calling
:meth:`bytes.decode`. See :ref:`binaryseq` and
:ref:`bufferobjects` for information on buffer objects.
Passing a :class:`bytes` object to :func:`str` without the *encoding*
or *errors* arguments falls under the first case of returning the informal
string representation (see also the :option:`-b` command-line option to
Python). For example::
>>> str(b'Zoot!')
"b'Zoot!'"
For more information on the ``str`` class and its methods, see
:ref:`textseq` and the :ref:`string-methods` section below. To output
formatted strings, see the :ref:`string-formatting` section. In addition,
see the :ref:`stringservices` section.
.. index::
pair: string; methods
.. _string-methods: .. _string-methods:
String Methods String Methods
-------------- --------------
.. index:: .. index::
pair: string; methods
module: re module: re
Strings implement all of the :ref:`common <typesseq-common>` sequence Strings implement all of the :ref:`common <typesseq-common>` sequence

View file

@ -274,11 +274,13 @@ Sequences
The following types are immutable sequences: The following types are immutable sequences:
.. index::
single: string; immutable sequences
Strings Strings
.. index:: .. index::
builtin: chr builtin: chr
builtin: ord builtin: ord
builtin: str
single: character single: character
single: integer single: integer
single: Unicode single: Unicode
@ -1188,14 +1190,14 @@ Basic customization
Called by :func:`bytes` to compute a byte-string representation of an Called by :func:`bytes` to compute a byte-string representation of an
object. This should return a ``bytes`` object. object. This should return a ``bytes`` object.
.. index::
single: string; __format__() (object method)
pair: string; conversion
builtin: print
.. method:: object.__format__(self, format_spec) .. method:: object.__format__(self, format_spec)
.. index::
pair: string; conversion
builtin: str
builtin: print
Called by the :func:`format` built-in function (and by extension, the Called by the :func:`format` built-in function (and by extension, the
:meth:`str.format` method of class :class:`str`) to produce a "formatted" :meth:`str.format` method of class :class:`str`) to produce a "formatted"
string representation of an object. The ``format_spec`` argument is string representation of an object. The ``format_spec`` argument is

View file

@ -418,6 +418,9 @@ Build
Documentation Documentation
------------- -------------
- Issue #16209: Move the documentation for the str built-in function to a new
str class entry in the "Text Sequence Type" section.
- Issue #13538: Improve str() and object.__str__() documentation. - Issue #13538: Improve str() and object.__str__() documentation.
- Issue #16489: Make it clearer that importlib.find_loader() needs parent - Issue #16489: Make it clearer that importlib.find_loader() needs parent