使用
__init_subclass__
. 这个
__doc__
类的属性设置为类的docstring的值;如果没有docstring,则属性设置为
None
class Study(ABC):
""" Define the purpose of the study here """
def __init__(self, value):
self.value = value
@abstractmethod
def do_something(self):
pass
def __init_subclass__(cls):
if cls.__doc__ is None:
raise AttributeError("No docstring")
那么
>>> class GoodStudy(Study):
... "Do some stuff"
...
>>> class BadStudy(Study):
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<path>/abc.py", line 126, in __new__
cls = super().__new__(mcls, name, bases, namespace, **kwargs)
File "tmp.py", line 16, in __init_subclass__
raise AttributeError("No docstring")
AttributeError: No docstring