Well, yeah, but you could implement it without __dict__ just by doing something like:
for attr, val in locals().items():
setattr(self, attr, val)
It still feels pretty un-Pythonic either way.
Re:Using attrs for everything in Python
by jsmthrowaway on Thursday August 25, 2016 @01:04PM
(#12360616)
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.
__slots__ also makes __dict__ nonexistent.