◐ Shell
reader mode source ↗
Skip to content
Merged
Changes from all commits
File filter
Conversations
Jump to
Diff view
Apply and reload
Show whitespace
Diff view
Apply and reload
63 changes: 39 additions & 24 deletions Doc/library/abc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,33 @@ a class or instance provides a particular interface, for example, is it
hashable or a mapping.


This module provides the following classes:

.. class:: ABCMeta

Expand All @@ -46,15 +72,15 @@ This module provides the following classes:
Register *subclass* as a "virtual subclass" of this ABC. For
example::

from abc import ABCMeta

class MyABC(metaclass=ABCMeta):
pass

MyABC.register(tuple)

assert issubclass(tuple, MyABC)
assert isinstance((), MyABC)

.. versionchanged:: 3.3
Returns the registered subclass, to allow usage as a class decorator.
Expand Down Expand Up @@ -95,7 +121,7 @@ This module provides the following classes:
def get_iterator(self):
return iter(self)

class MyIterable(metaclass=ABCMeta):

@abstractmethod
def __iter__(self):
Expand Down Expand Up @@ -132,17 +158,6 @@ This module provides the following classes:
available as a method of ``Foo``, so it is provided separately.


.. class:: ABC

A helper class that has :class:`ABCMeta` as its metaclass. With this class,
an abstract base class can be created by simply deriving from :class:`ABC`,
avoiding sometimes confusing metaclass usage.

Note that the type of :class:`ABC` is still :class:`ABCMeta`, therefore
inheriting from :class:`ABC` requires the usual precautions regarding metaclass
usage, as multiple inheritance may lead to metaclass conflicts.

.. versionadded:: 3.4


The :mod:`abc` module also provides the following decorators:
Expand All @@ -168,7 +183,7 @@ The :mod:`abc` module also provides the following decorators:
descriptors, it should be applied as the innermost decorator, as shown in
the following usage examples::

class C(metaclass=ABCMeta):
@abstractmethod
def my_abstract_method(self, ...):
...
Expand Down Expand Up @@ -230,7 +245,7 @@ The :mod:`abc` module also provides the following decorators:
is now correctly identified as abstract when applied to an abstract
method::

class C(metaclass=ABCMeta):
@classmethod
@abstractmethod
def my_abstract_classmethod(cls, ...):
@@ -251,7 +266,7 @@ The :mod:`abc` module also provides the following decorators:
is now correctly identified as abstract when applied to an abstract
method::

class C(metaclass=ABCMeta):
@staticmethod
@abstractmethod
def my_abstract_staticmethod(...):
Expand All @@ -278,7 +293,7 @@ The :mod:`abc` module also provides the following decorators:
is now correctly identified as abstract when applied to an abstract
method::

class C(metaclass=ABCMeta):
@property
@abstractmethod
def my_abstract_property(self):
Expand All @@ -288,7 +303,7 @@ The :mod:`abc` module also provides the following decorators:
read-write abstract property by appropriately marking one or more of the
underlying methods as abstract::

class C(metaclass=ABCMeta):
@property
def x(self):
...
Toggle all file notes Toggle all file annotations