Как порядок примесей влияет на производный класс?

Скажем, у меня есть следующие примеси, которые накладываются друг на друга, касаясь dispatch():

class FooMixin(object):
    def dispatch(self, *args, **kwargs):
        # perform check A
        ...
        return super(FooMixin, self).dispatch(*args, **kwargs)

class BarMixin(object):
    def dispatch(self, *args, **kwargs):
        # perform check B
        ...
        return super(FooMixin, self).dispatch(*args, **kwargs)

Если я хочу, чтобы мое представление проходило по порядку, отметьте A -> отметьте B, если мой код должен быть MyView(FooMixin, BarMixin, View)или MyView(BarMixin, FooMixin, View)?

И почему мы всегда ставим Viewили его подклассы после миксинов? (Я заметил это, читая исходный код универсальных представлений django, но я не знаю причин, стоящих за этим, если таковые имеются)

47
задан Martijn Pieters 15 April 2014 в 07:56
поделиться