python - 在 Python 中使用 super() 进行 DRY

标签 python inheritance multiple-inheritance

这个问题在这里已经有了答案:





What is a mixin, and why are they useful?

(16 个回答)


4 个月前关闭。




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

关于python - 在 Python 中使用 super() 进行 DRY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68250567/

相关文章:

python - 如何在 __new__ 中正确构建一个具有 type(3 args) 和 2 个祖先的类?

python - Zeromq REP Node 只会获取第一条消息(Req,Rep模式)

python - 将 textarea 值直接上传到 Dropbox

Python Bottle 框架错误 500 : can't find template in Daemon mode

python - 需要在 python 测试用例中模拟一些基类行为

c# - 无法将泛型类型的对象转换为泛型接口(interface) C#

python Pandas 数据框: need speed up process related to calculate 3 rows data

javascript - 如何设置具有继承+私有(private)属性+getters/setters的javascript类

java - 私有(private)变量和继承的构造函数

oop - 接口(interface)是否与多重继承冗余?