On Sat, May 26, 2018 at 7:22 PM, Michael Lohmann <mial.lohm...@gmail.com> wrote: > [Chris Angelico] >> Does that make sense? > Well yes, of course it does. When instantiating a HawaiianPizza of course you > want to set size and price. I don’t want to remove **kwargs and the current > way of handeling this. But if you now add: > class Lasagna: > def __init__(self, *, number_of_layers=5): > print("This Lasagna has %s layers", number_of_layers) > > class HaveYouEverTriedThis(Pizza, Lasagna): > """Well, this is just bizarre""" > > Now suddenly `Pizza` would have to accept kwargs. Why????????? It didn’t > "learn anything new". It can’t do anything with them on it’s own. Shouldn’t > you expect from a function that in the brackets you are shown what is > possible to actually call this function on? You could never actually call > Pizza with kwargs, so 1) Why should you be able to do so in the first place? > and 2) Why show the programmer that you could?. Just to make the MRO work. > And I would suggest that to handle this it would be a lot more elegant to > say: "If you are in the middle of an MRO: just pass everything unexpected > down“ >
Right, which means that Pizza and Lasagna are not compatible classes in that way. If you were to try to concoct some sort of, I don't know, layered conglomerate with meat, tomato, and pizza bases, you'd have to write an init method that does that for you. class Pizzagna(Pizza, Lasagna): def __init__(self, *, number_of_layers, **kw): Lasagna.__init__(self, number_of_layers=number_of_layers) Pizza.__init__(self, **kw) The Pizza class was deliberately designed to be an apex class - one that is the head of a hierarchy. The Lasagna class isn't part of that hierarchy, so merging it in takes some extra work - a pizza can't automatically subsume a lasagna. We had the family over here for dinner tonight, and we ate two pizzas. Now I'm wondering if a Pizzagna would have been a better choice... Anyhow. Further discussion about this should probably go onto python-list. ChrisA _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/