parent
174bc1e309
commit
b67596d815
@ -12,9 +12,9 @@
|
|||||||
--------------
|
--------------
|
||||||
|
|
||||||
This module provides the infrastructure for defining :term:`abstract base
|
This module provides the infrastructure for defining :term:`abstract base
|
||||||
classes <abstract base class>` (ABCs) in Python, as outlined in :pep:`3119`; see the PEP for why this
|
classes <abstract base class>` (ABCs) in Python, as outlined in :pep:`3119`;
|
||||||
was added to Python. (See also :pep:`3141` and the :mod:`numbers` module
|
see the PEP for why this was added to Python. (See also :pep:`3141` and the
|
||||||
regarding a type hierarchy for numbers based on ABCs.)
|
:mod:`numbers` module regarding a type hierarchy for numbers based on ABCs.)
|
||||||
|
|
||||||
The :mod:`collections` module has some concrete classes that derive from
|
The :mod:`collections` module has some concrete classes that derive from
|
||||||
ABCs; these can, of course, be further derived. In addition the
|
ABCs; these can, of course, be further derived. In addition the
|
||||||
@ -23,7 +23,7 @@ a class or instance provides a particular interface, for example, is it
|
|||||||
hashable or a mapping.
|
hashable or a mapping.
|
||||||
|
|
||||||
|
|
||||||
This module provides the following class:
|
This module provides the following classes:
|
||||||
|
|
||||||
.. class:: ABCMeta
|
.. class:: ABCMeta
|
||||||
|
|
||||||
@ -127,6 +127,16 @@ This module provides the following class:
|
|||||||
available as a method of ``Foo``, so it is provided separately.
|
available as a method of ``Foo``, so it is provided separately.
|
||||||
|
|
||||||
|
|
||||||
|
.. class:: ABC
|
||||||
|
|
||||||
|
A helper class that has :class:`ABCMeta` as metaclass. :class:`ABC` is the
|
||||||
|
standard class to inherit from in order to create an abstract base class,
|
||||||
|
avoiding sometimes confusing metaclass usage.
|
||||||
|
|
||||||
|
Note that :class:`ABC` type is still :class:`ABCMeta`, therefore inheriting
|
||||||
|
from :class:`ABC` requires usual precautions regarding metaclasses usage
|
||||||
|
as multiple inheritance may lead to metaclass conflicts.
|
||||||
|
|
||||||
The :mod:`abc` module also provides the following decorators:
|
The :mod:`abc` module also provides the following decorators:
|
||||||
|
|
||||||
.. decorator:: abstractmethod
|
.. decorator:: abstractmethod
|
||||||
|
@ -226,3 +226,9 @@ class ABCMeta(type):
|
|||||||
# No dice; update negative cache
|
# No dice; update negative cache
|
||||||
cls._abc_negative_cache.add(subclass)
|
cls._abc_negative_cache.add(subclass)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
class ABC(metaclass=ABCMeta):
|
||||||
|
"""Helper class that provides a standard way to create an ABC using
|
||||||
|
inheritance.
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
@ -96,6 +96,19 @@ class TestLegacyAPI(unittest.TestCase):
|
|||||||
|
|
||||||
class TestABC(unittest.TestCase):
|
class TestABC(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_ABC_helper(self):
|
||||||
|
# create an ABC using the helper class and perform basic checks
|
||||||
|
class C(abc.ABC):
|
||||||
|
@classmethod
|
||||||
|
@abc.abstractmethod
|
||||||
|
def foo(cls): return cls.__name__
|
||||||
|
self.assertEqual(type(C), abc.ABCMeta)
|
||||||
|
self.assertRaises(TypeError, C)
|
||||||
|
class D(C):
|
||||||
|
@classmethod
|
||||||
|
def foo(cls): return super().foo()
|
||||||
|
self.assertEqual(D.foo(), 'D')
|
||||||
|
|
||||||
def test_abstractmethod_basics(self):
|
def test_abstractmethod_basics(self):
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def foo(self): pass
|
def foo(self): pass
|
||||||
|
@ -163,6 +163,9 @@ Core and Builtins
|
|||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Add abc.ABC class to use inheritance rather than a direct invocation of
|
||||||
|
ABCMeta metaclass. Patch by Bruno Dupuis.
|
||||||
|
|
||||||
- Expose the TCP_FASTOPEN and MSG_FASTOPEN flags in socket when they're
|
- Expose the TCP_FASTOPEN and MSG_FASTOPEN flags in socket when they're
|
||||||
available.
|
available.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user