【发布时间】:2016-09-08 16:04:41
【问题描述】:
我在 Django 中有以下代码:
class Parent(models.Model):
def save(self):
# Do Stuff A
class Mixin(object):
def save(self):
# Do Stuff B
class A(Parent, Mixin):
def save(self):
super(A, self).save()
# Do stuff C
现在,我想在不破坏 Parent 中保存行为的情况下使用 mixin。因此,当我保存时,我想做 C、B 和 A 的事情。我已经阅读了 Calling the setter of a super class in a mixin 但是我不明白,并且阅读了超级文档似乎并没有回答我的问题。
问题是,我应该在 mixin 中添加什么来确保它执行 B 并且不会阻止 Stuff A 的发生?
【问题讨论】:
-
你确定继承顺序是正确的吗 - 你通常会在 父级之后放置一个 mixin...
-
我不确定,不。我的理解是,如果我反过来做,mixin 的保存方法将被 Parent 覆盖。对吗?
-
否 - MRO 是(对于非钻石继承) - 从右到左...
-
已修复。把 cmets 留在里面。
-
别理我——我能把它归结为缺乏咖啡吗? :p