On 2018-05-26 02:22, Michael Lohmann wrote:
Whenever you give any kwargs when directly instantiating `A` they
will be passed down to super which in this case is `object`. And now
to the follow-up question: Can you tell me which kwargs object takes
as an input for it’s __init__? So does it EVER make ANY sense to
specify them if you DIRECTLY create an instance of `A`?

But now let’s say your MRO is `SuperClass, A, B`, then A should
better be able to forward the kwargs, so currently you need to
directly hand them to `A` and rely on the fact that it passes them on
to `B`.

If I understand correctly, the essence of your argument seems to be that you want be able to write a class A, and you want to be able to use that class EITHER as the top of an inheritance chain (i.e., have it inherit directly from object) OR in the middle of an inheritance chain (i.e., inheriting from some other class, but not object). But you can't, because if you pass on extra **kwargs, that will fail if the class inherits directly from object, but if you don't pass on extra **kwargs, that will fail if the class doesn't inherit directly from object. Is that correct?

I agree that it is somewhat somewhat awkward that "is this the top class in the hierarchy" is something that has to be known when writing a class. I think this would be ameliorated by having "object" accept and ignore extra arguments. (I seem to recall that was decided to be a bad idea at some time in the past, though.) But I don't really see how your solution of magically making kwargs appear and disappear is a good solution to that problem.

--
Brendan Barnwell
"Do not follow where the path may lead.  Go, instead, where there is no
path, and leave a trail."
   --author unknown
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to