使用Python中的super()进行DRY



如果这是一个愚蠢的问题,但我无法通过搜索找到,我深表歉意。我有如下效果的Python代码:

class CustomListView(ListView):
def dispatch(self, request : HttpRequest, *args, **kwargs):
# ... long blurb doing something with request and super, e.g.
return super().dispatch(request, *args, **kwargs)
class CustomDetailView(DetailView):
def dispatch(self, request : HttpRequest, *args, **kwargs):
# ... long blurb doing something with request and super, e.g.
return super().dispatch(request, *args, **kwargs)

(这是Django的上下文,但我认为这不重要。(

这两个dispatch函数完全相同,所以我觉得这公然违反了DRY原则。但问题是,由于使用了super(),我不知道如何只写一次这个函数并进行继承,假设super被调用了很多次。

处理这个问题的最佳方法是什么?

为了将其标记为已解决,我要查找的相关关键字是mixins。评论中有几个链接,一个链接到过去的SO答案,另一个链接专门指向Django mixins。谢谢大家。

相关内容

  • 没有找到相关文章

最新更新