summaryrefslogtreecommitdiffstats
path: root/Lib/abc.py
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-08-17 00:52:52 (GMT)
committerBenjamin Peterson <benjamin@python.org>2010-08-17 00:52:52 (GMT)
commit45c257f193ddb8dfd54a0edb7253ee9254329ab7 (patch)
tree18b04c290ba0aadda9392a63bdebb2e1f64b9718 /Lib/abc.py
parent36e791179c3bb49d45a17c27fbc39ec9b2a8694f (diff)
downloadcpython-45c257f193ddb8dfd54a0edb7253ee9254329ab7.zip
cpython-45c257f193ddb8dfd54a0edb7253ee9254329ab7.tar.gz
cpython-45c257f193ddb8dfd54a0edb7253ee9254329ab7.tar.bz2
add support for abstract class and static methods #5867
Diffstat (limited to 'Lib/abc.py')
-rw-r--r--Lib/abc.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/Lib/abc.py b/Lib/abc.py
index 0f98036..a6c2dc4 100644
--- a/Lib/abc.py
+++ b/Lib/abc.py
@@ -25,6 +25,46 @@ def abstractmethod(funcobj):
return funcobj
+class abstractclassmethod(classmethod):
+ """A decorator indicating abstract classmethods.
+
+ Similar to abstractmethod.
+
+ Usage:
+
+ class C(metaclass=ABCMeta):
+ @abstractclassmethod
+ def my_abstract_classmethod(cls, ...):
+ ...
+ """
+
+ __isabstractmethod__ = True
+
+ def __init__(self, callable):
+ callable.__isabstractmethod__ = True
+ super().__init__(callable)
+
+
+class abstractstaticmethod(staticmethod):
+ """A decorator indicating abstract staticmethods.
+
+ Similar to abstractmethod.
+
+ Usage:
+
+ class C(metaclass=ABCMeta):
+ @abstractstaticmethod
+ def my_abstract_staticmethod(...):
+ ...
+ """
+
+ __isabstractmethod__ = True
+
+ def __init__(self, callable):
+ callable.__isabstractmethod__ = True
+ super().__init__(callable)
+
+
class abstractproperty(property):
"""A decorator indicating abstract properties.