[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