Demek, dispatch()
dokunarak birbirleriyle örtüşür aşağıdaki katmalar vardır:Karışımların sırası türetilmiş sınıfı nasıl etkiler?
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)
ben sırayla geçmesi görüşümü istiyorsanız, kontrol A -> B kontrol benim kodu olmalıdır MyView(FooMixin, BarMixin, View)
veya MyView(BarMixin, FooMixin, View)
?
Ve neden hep View
veya Mixins sonra alt sınıfları koyacağım? (Bunun django genel görünümlerinin kaynak kodunu okumasını fark ettim, ancak arkasındaki mantığı bilmiyorum, varsa)
thx agf. Sorumum "neden son ekledi" olmalıydı ve sen cevapladın. Şerefe. – tamakisquare
Daha açıkçası, bu çağrıları tek yöntem, doğrudan 'FooMixin.dispatch' olduğunu. 'Nesnesi' bir' dispatch' yöntemi yok 'çünkü süper (FooMixin, kendinden) .dispatch' sonra BarMixin.dispatch'' olarak değerlendirilir. 'Aynı nedenle UltimateBase.dispatch'' sonucunu .dispatch' süper (BarMixin, kendinden). –
@MadPhysicist Bu doğru değil. Bu yöntem, nesne tarafından da tanımlanmış olsa bile çalışır - kendiniz deneyin. Daha fazla bilgi için bağlantılı cevaba bakınız. – agf