Python:DRY vs explicit优于implicit

Python:DRY vs explicit优于implicit,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在用django和DRF构建一个API。在本文中,我使用了自定义ModelViewSet和Mixin。它们实现了我的API的list()、update()、create()和destroy()函数。现在我有了一整套视图集: from kernel.api.viewsets.base implement CustomBaseViewSet class MyModelViewSet1(CustomBaseViewSet): serializer_class = MyModel1Se

我正在用django和DRF构建一个API。在本文中,我使用了自定义ModelViewSet和Mixin。它们实现了我的API的list()、update()、create()和destroy()函数。现在我有了一整套视图集:

from kernel.api.viewsets.base implement CustomBaseViewSet

class MyModelViewSet1(CustomBaseViewSet):
      serializer_class = MyModel1Serializer 
      queryset =  MyModel1.objects.all()

class MyModelViewSet2(CustomBaseViewSet):
      serializer_class = MyModel2Serializer 
      queryset =  MyModel2.objects.all()

class MyModelViewSet3(CustomBaseViewSet):
      serializer_class = MyModel3Serializer 
      queryset =  MyModel3.objects.all()

 ... and so on ...
问题1:我现在在两个禅宗规则中遇到了冲突,我应该显式绑定create、list、destoy和update方法(因为显式比隐式好),还是认为这是浪费时间

class MyModel1ViewSet(CustomBaseViewSet)
      serializer_class = MyModel1Serializer 
      queryset =  MyModel1.objects.all()              

      def list(self, *args, **kwargs):
          super().list(*args, **kwargs)

      def create(self, *args, **kwargs):
          super().create(*args, **kwargs)
      ...
我认为显式方法比干式方法更有用的一点是,我可以在方法中提供docstring,这些方法在我的drfapi中显示为文档


问题2:在DRY与E>I-原则之间是否还有其他的优点或缺点???

这并不明确,这是多余的。是的,我同意这一点。但是当我考虑到我可以在方法中提供的docstring时,它将使我的API文档对于该视图集更具可读性和特定性。或者这仍然是一种不好的做法?如果您发现单个docstring很有用,那么我个人会说复制是可以的,并且我不会太担心这是否是一种不好的做法。我从您的代码中了解到的是对方法的覆盖,没有任何功能更新,只是为了读者。分派方法中没有明确的投标本身。像这样更冗长;有人可能会争辩说,基于继承方案,您可能会从viewset声明中获取相同的信息。是的。但是我的模型继承了一个基本视图集,它在create()、update()和destroy()方法中实现了字段级权限、记录锁定等基本功能。我希望将其用于所有API端点。如果我从BaseModelViewSet中获取docstring,那么所有API端点的docstring都是相同的。