[Python-ideas] JavaScript-Style Object Creation in Python (using a constructor function instead of a class to create objects)
Sven R. Kunze
srkunze at mail.de
Wed May 17 12:11:00 EDT 2017
On 17.05.2017 13:37, Michel Desmoulin wrote:
> Having a cleaner, faster solution to declare a class would be awesome,
> both for dev and for teaching. That's why we all love attrs.
>
> But we are talking here about a nice-to-have feature. Python works
> perfectly fine without it. But since we are at it, let's make something
> great.
>
Same for me. IMHO the biggest benefit using attr is an (almost?)
feature-complete and bug-free set of pre-defined __dunder__ methods as
described in [1].
Defining state-variables (aka instance variables accessible via 'self.')
wouldn't be enough for me to make it a valuable feature. So, one could
imagine a __dunder__-method generator of some sort.
But even given that (and I am only speaking for my team), I haven't even
seen a use-case for namedtuples in a year. Every time we considered it,
people said: "please make it its own class for documentary purposes;
this thing will tend to grow faster than we can imagine".
>> 2. Is it really that complicated? attr.s is just a normal Python
>> function, which adds some members to a class.
>> You don't even have to use the decorator @ syntax, that is just a convenience.
>> To me this seems easier to teach than yet another dedicated syntax.
> My guess is that, without the decorator, the attributes don't do
> anything. They are just declarative hints for the decorator to do the magic.
>
> But even then, it's already an additional burden to have to explain the
> difference between this magic and the regular class attribute.
It might also have something to do with this. IMO this feature should
integrate naturally in a way that nobody notice.
Sven
[1] https://attrs.readthedocs.io/en/stable/why.html#hand-written-classes
More information about the Python-ideas
mailing list