Tim*_*imD 1 python multiple-inheritance
我有一个看起来像这样的类结构:
class Question(object):
def answer(self):
return "Base Answer"
class ExclaimMixin(object):
def answer(self):
return "{}!".format(super(ExclaimMixin, self).answer())
class ExpressiveQuestion(Question, ExclaimMixin)
pass
Run Code Online (Sandbox Code Playgroud)
我希望answerin 方法ExclaimMixin能够answer在Question调用 in 时访问in ExpressiveQuestion,以便它返回"Base Answer!"。
显然,在这种情况下,这可以通过将answer方法放入inExclaimMixin中ExpressiveQuestion来解决,但在某些情况下这是不可能的(例如,在类结构中更深入和分支)。
是否可以使用mixin来实现这个结果,或者只能通过修改基类树来实现?
使用 mixins 时,您需要记住基类顺序的简单规则 - “从右到左”。这意味着,所有的 mixin 都应该在实际的基类之前。
class Question(object):
def answer(self):
return "Base Answer"
class ExclaimMixin(object):
def answer(self):
return "{}!".format(super(ExclaimMixin, self).answer())
class ExpressiveQuestion(ExclaimMixin, Question)
pass
>>> q = ExpressiveQuestion()
>>> q.answer()
'Base Answer!'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |