gpt4 book ai didi

python - 强制子类编写文档字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:22:43 25 4
gpt4 key购买 nike

我实现了一个抽象类:

from abc import ABC, abstractmethod

class Study(ABC):

""" Define the purpose of the study here """

def __init__(self, value):
self.value = value

@abstractmethod
def do_something(self):
pass

我还实现了一个子类:

class PilotStudy(Study):

def do_something(self):
print('Pilot Study')

我想强制子类在类定义下面定义一个文档字符串。有没有一种方法可以做到这一点(这样会为我在上面定义的子类抛出错误,因为该类中没有文档字符串)?

最佳答案

使用 __init_subclass__。类的 __doc__ 属性被设置为类的文档字符串的值;如果没有文档字符串,则该属性设置为 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

关于python - 强制子类编写文档字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59312322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com