[Python-Dev] python and super
Michael Foord
fuzzyman at voidspace.org.uk
Fri Apr 15 18:02:56 CEST 2011
On 15/04/2011 16:18, Carl Meyer wrote:
>
> On 04/15/2011 08:53 AM, Michael Foord wrote:
>>> If we treat django's failure to use super as a bug, you want the
>>> Python language to work-around that bug so that:
>> What you say (that this particular circumstance could be treated as a
>> bug in django) is true,
> Just as a side note: if there is a bug demonstrated here, it is in
> unittest2, not Django. Django's TestCase subclasses don't even override
> __init__ or setUp, so there is no opportunity for them to call or fail
> to call super() in either case.
>
> If you re-read Ricardo's original presentation of the case, he correctly
> noted that it is unittest2's TestCase which does not call super() and
> thus prevents cooperative multiple inheritance. I'm not sure who in this
> thread first mis-read his post and called it a possible bug in Django,
> but it was a mis-reading which now appears to be self-propagating ;-)
>
Well yes, but it is also a bug in the copy of unittest2 embedded in
django - so whilst it can be fixed in unittest2 (simply deleting the
setUp and tearDown methods which do nothing but override
unittest.TestCase.setUp and tearDown) it *also* needs to be fixed in
django.
This particular issue does illustrate the problem well though - the
methods in unittest2 don't call up to their parent class (which is fine
because those methods are empty), but in not calling up also they
prevent sibling methods being called in a multiple inheritance situation.
So for those who have been saying that not wanting to call up to parents
is a valid use case, yes I quite agree. But you have to be aware that
because of the semantics of super, not calling up to your parents
basically prevents those methods being used in the presence of multiple
inheritance.
All the best,
Michael Foord
> Carl
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk
--
http://www.voidspace.org.uk/
May you do good and not evil
May you find forgiveness for yourself and forgive others
May you share freely, never taking more than you give.
-- the sqlite blessing http://www.sqlite.org/different.html
More information about the Python-Dev
mailing list