@@ -2033,7 +2033,8 @@ Basic customization
20332033   "informal" string representation of instances of that class is required.
20342034
20352035   This is typically used for debugging, so it is important that the representation
2036-    is information-rich and unambiguous.
2036+    is information-rich and unambiguous. A default implementation is provided by the
2037+    :class: `object ` class itself.
20372038
20382039   .. index ::
20392040      single: string; __str__() (object method)
@@ -2043,10 +2044,10 @@ Basic customization
20432044
20442045.. method :: object.__str__(self) 
20452046
2046-    Called by :func: `str(object) <str> ` and  the built-in functions 
2047-    :func: ` format `  and :func: `print ` to compute the "informal" or nicely
2047+    Called by :func: `str(object) <str> `,  the default  :meth: ` __format__ ` implementation, 
2048+    and the built-in function  :func: `print `,  to compute the "informal" or nicely
20482049   printable string representation of an object.  The return value must be a
2049-    :ref: `string   <textseq >` object.
2050+    :ref: `str   <textseq >` object.
20502051
20512052   This method differs from :meth: `object.__repr__ ` in that there is no
20522053   expectation that :meth: `__str__ ` return a valid Python expression: a more
@@ -2063,7 +2064,8 @@ Basic customization
20632064   .. index :: pair: built-in function; bytes 
20642065
20652066   Called by :ref: `bytes  <func-bytes >` to compute a byte-string representation
2066-    of an object. This should return a :class: `bytes ` object.
2067+    of an object. This should return a :class: `bytes ` object. The :class: `object `
2068+    class itself does not provide this method.
20672069
20682070   .. index ::
20692071      single: string; __format__() (object method)
@@ -2087,6 +2089,9 @@ Basic customization
20872089
20882090   The return value must be a string object.
20892091
2092+    The default implementation by the :class: `object ` class should be given
2093+    an empty *format_spec * string. It delegates to :meth: `__str__ `.
2094+ 
20902095   .. versionchanged :: 3.4 
20912096      The __format__ method of ``object `` itself raises a :exc: `TypeError `
20922097      if passed any non-empty string.
@@ -2129,6 +2134,12 @@ Basic customization
21292134   ``(x<y or x==y) `` does not imply ``x<=y ``. To automatically generate ordering
21302135   operations from a single root operation, see :func: `functools.total_ordering `.
21312136
2137+    By default, the :class: `object ` class provides implementations consistent
2138+    with :ref: `expressions-value-comparisons `: equality compares according to
2139+    object identity, and order comparisons raise :exc: `TypeError `. Each default
2140+    method may generate these results directly, but may also return
2141+    :data: `NotImplemented `.
2142+ 
21322143   See the paragraph on :meth: `__hash__ ` for
21332144   some important notes on creating :term: `hashable ` objects which support
21342145   custom comparison operations and are usable as dictionary keys.
@@ -2184,9 +2195,9 @@ Basic customization
21842195   bucket).
21852196
21862197   User-defined classes have :meth: `__eq__ ` and :meth: `__hash__ ` methods
2187-    by default; with them, all objects compare unequal (except with themselves) 
2188-    and ``x.__hash__() `` returns an appropriate value such that `` x == y `` 
2189-    implies both that ``x is y `` and ``hash(x) == hash(y) ``.
2198+    by default (inherited from the  :class: ` object ` class) ; with them, all objects compare
2199+    unequal (except with themselves)  and ``x.__hash__() `` returns an appropriate
2200+    value such that `` x == y ``  implies both that ``x is y `` and ``hash(x) == hash(y) ``.
21902201
21912202   A class that overrides :meth: `__eq__ ` and does not define :meth: `__hash__ `
21922203   will have its :meth: `__hash__ ` implicitly set to ``None ``.  When the
@@ -2236,8 +2247,8 @@ Basic customization
22362247   ``bool() ``; should return ``False `` or ``True ``.  When this method is not
22372248   defined, :meth: `~object.__len__ ` is called, if it is defined, and the object is
22382249   considered true if its result is nonzero.  If a class defines neither
2239-    :meth: `!__len__ ` nor :meth: `!__bool__ `, all its instances are considered 
2240-    true.
2250+    :meth: `!__len__ ` nor :meth: `!__bool__ ` (which is true of the  :class: ` object ` 
2251+    class itself), all its instances are considered  true.
22412252
22422253
22432254.. _attribute-access :
@@ -2259,6 +2270,7 @@ access (use of, assignment to, or deletion of ``x.name``) for class instances.
22592270   for ``self ``; or :meth: `__get__ ` of a *name * property raises
22602271   :exc: `AttributeError `).  This method should either return the (computed)
22612272   attribute value or raise an :exc: `AttributeError ` exception.
2273+    The :class: `object ` class itself does not provide this method.
22622274
22632275   Note that if the attribute is found through the normal mechanism,
22642276   :meth: `__getattr__ ` is not called.  (This is an intentional asymmetry between
@@ -2397,8 +2409,8 @@ method (a so-called *descriptor* class) appears in an *owner* class (the
23972409descriptor must be in either the owner's class dictionary or in the class
23982410dictionary for one of its parents).  In the examples below, "the attribute"
23992411refers to the attribute whose name is the key of the property in the owner
2400- class' :attr: `~object.__dict__ `.
2401- 
2412+ class' :attr: `~object.__dict__ `.  The  :class: ` object ` class itself does not 
2413+ implement any of these protocols. 
24022414
24032415.. method :: object.__get__(self, instance, owner=None) 
24042416
@@ -3090,17 +3102,19 @@ Emulating callable objects
30903102
30913103   Called when the instance is "called" as a function; if this method is defined,
30923104   ``x(arg1, arg2, ...) `` roughly translates to ``type(x).__call__(x, arg1, ...) ``.
3105+    The :class: `object ` class itself does not provide this method.
30933106
30943107
30953108.. _sequence-types :
30963109
30973110Emulating container types
30983111------------------------- 
30993112
3100- The following methods can be defined to implement container objects.  Containers
3101- usually are :term: `sequences <sequence> ` (such as :class: `lists <list> ` or
3113+ The following methods can be defined to implement container objects. None of them
3114+ are provided by the :class: `object ` class itself. Containers usually are
3115+ :term: `sequences <sequence> ` (such as :class: `lists <list> ` or
31023116:class: `tuples <tuple> `) or :term: `mappings <mapping> ` (like
3103- :class : `dictionaries <dict > `),
3117+ :term : `dictionaries <dictionary > `),
31043118but can represent other containers as well.  The first set of methods is used
31053119either to emulate a sequence or to emulate a mapping; the difference is that for
31063120a sequence, the allowable keys should be the integers *k * for which ``0 <= k < 
@@ -3460,6 +3474,7 @@ Typical uses of context managers include saving and restoring various kinds of
34603474global state, locking and unlocking resources, closing opened files, etc.
34613475
34623476For more information on context managers, see :ref: `typecontextmanager `.
3477+ The :class: `object ` class itself does not provide the context manager methods.
34633478
34643479
34653480.. method :: object.__enter__(self) 
@@ -3709,6 +3724,8 @@ are awaitable.
37093724   Must return an :term: `iterator `.  Should be used to implement
37103725   :term: `awaitable ` objects.  For instance, :class: `asyncio.Future ` implements
37113726   this method to be compatible with the :keyword: `await ` expression.
3727+    The :class: `object ` class itself is not awaitable and does not provide
3728+    this method.
37123729
37133730   .. note ::
37143731
@@ -3794,6 +3811,9 @@ its ``__anext__`` method.
37943811
37953812Asynchronous iterators can be used in an :keyword: `async for ` statement.
37963813
3814+ The :class: `object ` class itself does not provide these methods.
3815+ 
3816+ 
37973817.. method :: object.__aiter__(self) 
37983818
37993819   Must return an *asynchronous iterator * object.
@@ -3840,6 +3860,8 @@ suspend execution in its ``__aenter__`` and ``__aexit__`` methods.
38403860
38413861Asynchronous context managers can be used in an :keyword: `async with ` statement.
38423862
3863+ The :class: `object ` class itself does not provide these methods.
3864+ 
38433865.. method :: object.__aenter__(self) 
38443866
38453867   Semantically similar to :meth: `~object.__enter__ `, the only
0 commit comments