在 Python 中用 super() 干

DRY with super() in Python

抱歉,这是一个愚蠢的问题,但我无法通过搜索找到它。我有 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。评论中有几个链接,一个到 past SO answer and one to Django mixins specifically。谢谢大家