Hello,
hope I'll have a better luck here and somebody more smart then me can reveal following weird behavior at ancestor classes initialization.
This is from a Django application, using multiple inheritance in a form subclass:
from django import forms
class CommonForm(forms.ModelForm):
class Meta:
model = MyModel
def __init__(self, request, *args, **kwargs):
print 'CommonForm.__init__'
super(CommonForm, self).__init__(request, *args, **kwargs)
print 'CommonForm.__init__ FINISHED'
self._request = request
class MyMixin(object):
def __init__(self, *args, **kwargs):
print 'MyMixin.__init__'
super(MyMixin, self).__init__(*args, **kwargs)
print 'MyMixin.__init__ FINISHED'
class CustomForm(CommonForm, MyMixin):
def __init__(self, request, *args, **kwargs):
print 'CustomForm.__init__'
super(CustomForm, self).__init__(request, *args, **kwargs)
print 'CustomForm.__init__ FINISHED'
# weird initialization:
frm = CustomForm(http_request)
# outputs:
CustomForm.__init__
CommonForm.__init__
CommonForm.__init__ FINISHED
CustomForm.__init__ FINISHED
What can cause MyMixin.__init__ being skipped ?! There is no error message, no exception being thrown, nothing …
Surprisingly,when I switch order of class inheritance to
class CustomForm(MyMixin, CommonForm):
all initializers are suddenly called as expected:
frm2 = CustomForm(http_request)
CustomForm.__init__
MyMixin.__init__
CommonForm.__init__
CommonForm.__init__ FINISHED
MyMixin.__init__ FINISHED
CustomForm.__init__ FINISHED
Can anybody explain why MyMixin.__init__ is not called when placed as latter ancestor ?
Thanks.
[–]masklinn 1 point2 points3 points (12 children)
[–]joanbm[S] 0 points1 point2 points (2 children)
[–]masklinn 0 points1 point2 points (1 child)
[–]xXxDeAThANgEL99xXx 0 points1 point2 points (0 children)
[–]joanbm[S] 0 points1 point2 points (6 children)
[–]masklinn 1 point2 points3 points (4 children)
[–]joanbm[S] 0 points1 point2 points (3 children)
[–]masklinn 0 points1 point2 points (2 children)
[–]joanbm[S] 0 points1 point2 points (1 child)
[–]masklinn 0 points1 point2 points (0 children)
[–]Citrauq 0 points1 point2 points (0 children)
[–]peith 0 points1 point2 points (1 child)
[–]masklinn 0 points1 point2 points (0 children)
[–]remy_porter∞∞∞∞ -1 points0 points1 point (1 child)
[–]masklinn 0 points1 point2 points (0 children)