言って、私は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)
を - > Bをチェックし、自分のコードがMyView(FooMixin, BarMixin, View)
またはMyView(BarMixin, FooMixin, View)
する必要があります?
なぜ私たちはいつもView
またはそのサブクラスをミックスインの後に入れますか? (これは、ジャンゴ一般的なビューのソースコードを読むことから気づいたが、もしあれば、それの背後に根拠を知らない)
thx agf。私の質問は「なぜ最後に追加されたのか」ということになっていて、あなたはそれに答えました。乾杯。 – tamakisquare
これを直接呼び出す唯一の方法は 'FooMixin.dispatch'です。 'super(FooMixin、self).dispatch'は、' object'に 'dispatch'メソッドがないので' BarMixin.dispatch'に評価されます。 'super(BarMixin、self).dispatch'は同じ理由で' UltimateBase.dispatch'と評価されます。 –
@MadPhysicistそうではありません。メソッドがオブジェクトによって定義されているメソッドであっても、これは動作します。自分で試してみてください。詳細については、リンクされた回答を参照してください。 – agf