在 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。谢谢大家
抱歉,这是一个愚蠢的问题,但我无法通过搜索找到它。我有 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。谢谢大家