如何处理类层次结构中的Python装饰器?

2024-09-29 23:20:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用DRF开发一个Django项目。我还将drf-yasg用于文档目的。你知道吗

长话短说:我正在使用基于类的视图,我有一些非常相似的api,我决定创建一个超类,并在其中实现api的公共部分!为了更清楚:

class MySuperApiView(APIView):
    permission_classes = [<some permission classes>]

    @swagger_auto_schema(request_body=request_body, responses=api_responses)
    def post(self, *args, **kwargs):
        # do some common stuff here
        self.uncommon()
        # do some other common stuff here

我只是重写子类中的uncommon方法:

class SomeCustomApi(MySuperApiView):
    def uncommon(self):
        # do specific things here

它工作得很好,但我有一个小问题:每个Api都有自己的api_responses,它是在超类的swagger_auto_schema装饰器中初始化的!而且不可能改变它!你知道吗

对于这种情况你有什么建议?我真的很想做OOP和遵守干燥的原则。你知道吗


Tags: selfapiautohererequestschemaswaggersome

热门问题