54 votes

Comment l'ordre des mixins affecte-t-il la classe dérivée ?

Dites, j'ai les mixins suivants qui se chevauchent en touchant 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)

Si je veux que ma vue passe par la commande, cochez A -> cochez B, mon code doit-il être MyView(FooMixin, BarMixin, View) ou MyView(BarMixin, FooMixin, View) ?

Et pourquoi mettons-nous toujours View ou ses sous-classes après les mixins ? (J'ai remarqué cela en lisant le code source des vues génériques de Django, mais je ne connais pas la justification, le cas échéant)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X