> I'd say NOT wanting to call an __init__ method of a superclass is a
> rather uncommon occurence. It's generally a huge error. So I think
> it's worth not accomodating that.

I will give you an example then where I am absolutely fine with calling 
super().__init__ in all classes and describe why I am not really satisfied with 
the current status. (It is from my email from yesterday 17:19 GMT):

> What bugs me is that in my example from yesterday (
>     class Aardvark:
>         def __init__(self, quantity, **kwargs):
>             print("There is some quantity:", quantity)
>             # I actually don’t care about **kwargs and just hand them on
>             super().__init__(**kwargs)
> 
>     class Clever:
>         def __init__(self, cleverness=1):
>             print("You are %d clever“ % cleverness)
> 
>     class Ethel(Aardvark, Clever):
>         """Ethel is a very clever Aardvark"""
>         def __init__(self):
>             super().__init__(quantity="some spam", cleverness=1000)
> ) if you want to instantiate an Aardvark directly there is NO WAY EVER that 
> you could give him ANY kwargs. So why should the __init__ indicate something 
> else? Well, just to make the MRO work. All I want is to make it as obvious as 
> possible that an Aardvark only takes `quantity` as input, but is fully 
> "cooperative" with other classes if it is in the middle of the MRO (by which 
> I mean that it will automatically call the __init__ and hand on any kwargs it 
> didn’t expect to a class from a different branch of the class hierarchy).
_______________________________________________
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