[Python-Dev] python and super
Nikolay Zakharov
nikolay.desh at gmail.com
Sun Apr 17 20:57:02 CEST 2011
16.04.2011 03:38, Greg Ewing пишет:
> Michael Foord wrote:
>
>> consider the "recently" introduced problem caused by object.__init__
> > not taking arguments. This makes it impossible to use super correctly
> > in various circumstances.
> >
> > ...
> >
>> It is impossible to inherit from both C and A and have all parent
>> __init__ methods called correctly. Changing the semantics of super as
>> described would fix this problem.
>
> I don't see how, because auto-super-calling would eventually
> end up trying to call object.__init__ with arguments and fail.
>
> You might think to "fix" this by making a special case of
> object.__init__ and refraining from calling it. But the same
> problem arises in a more general way whenever some class in
> the mix has a method with the right name but the wrong
> signature, which is likely to happen if you try to mix
> classes that weren't designed to be mixed together.
>
Michael's words are not about *auto-calling* but about *stopping
prevention* of parent's method call by a class that unrelated to such
parent. In the example above A is such a stopper that prevents calling
of B.__init__ and B is a stopper for calling A.__init__ but A and B are
completely unrelated to each other.
object.__init__ would not be called anyway (in this example) but the
point is that nobody (at least among Michael and myself) going to
*auto-call* object.__init__ with some automagically picked arguments.
--
Nikolay Zakharov
More information about the Python-Dev
mailing list