Because it is. There is zero reason to be clever here. Yeah, you have to be explicit in __init__. We are all used to it. The "a," "b," "c" examples are disingenuous though because you're often validating, enforcing types, converting, deriving other attributes...
__init__ is documentation. I read it to understand what's going on.
__init__ is documentation. I read it to understand what's going on.