From 45c257f193ddb8dfd54a0edb7253ee9254329ab7 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Tue, 17 Aug 2010 00:52:52 +0000 Subject: add support for abstract class and static methods #5867 --- Lib/abc.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'Lib/abc.py') diff --git a/Lib/abc.py b/Lib/abc.py index 0f98036304..a6c2dc4877 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. -- cgit v1.2.1