Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
122e88a8
Kaydet (Commit)
122e88a8
authored
Agu 30, 2017
tarafından
Eric Appelt
Kaydeden (comit)
Éric Araujo
Agu 30, 2017
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
bpo-30096: Use ABC in abc reference examples (#1220)
Use base class rather than metaclass in examples.
üst
384899df
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
24 deletions
+39
-24
abc.rst
Doc/library/abc.rst
+39
-24
No files found.
Doc/library/abc.rst
Dosyayı görüntüle @
122e88a8
...
...
@@ -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:
This module provides the metaclass :class:`ABCMeta` for defining ABCs and
a helper class :class:`ABC` to alternatively define ABCs through inheritance:
.. 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, for example::
from abc import ABC
class MyABC(ABC):
pass
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.
One may also define an abstract base class by passing the metaclass
keyword and using :class:`ABCMeta` directly, for example::
from abc import ABCMeta
class MyABC(metaclass=ABCMeta):
pass
.. versionadded:: 3.4
.. class:: ABCMeta
...
...
@@ -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
from abc import ABC
class MyABC(metaclass=ABCMeta
):
pass
class MyABC(ABC
):
pass
MyABC.register(tuple)
MyABC.register(tuple)
assert issubclass(tuple, MyABC)
assert isinstance((), MyABC)
assert issubclass(tuple, MyABC)
assert isinstance((), MyABC)
.. versionchanged:: 3.3
Returns the registered subclass, to allow usage as a class decorator.
...
...
@@ -95,7 +121,7 @@ This module provides the following classes:
def get_iterator(self):
return iter(self)
class MyIterable(
metaclass=ABCMeta
):
class MyIterable(
ABC
):
@abstractmethod
def __iter__(self):
...
...
@@ -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:
...
...
@@ -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
):
class C(
ABC
):
@abstractmethod
def my_abstract_method(self, ...):
...
...
...
@@ -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
):
class C(
ABC
):
@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
):
class C(
ABC
):
@staticmethod
@abstractmethod
def my_abstract_staticmethod(...):
...
...
@@ -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
):
class C(
ABC
):
@property
@abstractmethod
def my_abstract_property(self):
...
...
@@ -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
):
class C(
ABC
):
@property
def x(self):
...
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment