On Mon, 15 May 2017 at 08:30 Guido van Rossum firstname.lastname@example.org wrote:
This should be worked into a PEP, instead of living on as a bunch of python-ideas posts and blogs.
I find the attrs documentation (and Glyph's blog post about it) almost unreadable because of the exalted language -- half the doc seems to be *selling* the library more than *explaining* it. If this style were to become common I would find it a disturbing trend.
But having something alongside NamedTuple that helps you declare classes with mutable attributes using the new PEP 526 syntax (and maybe a few variants) would definitely be useful. Will someone please write a PEP? Very few of the specifics of attrs need be retained (its punny naming choices are too much for the stdlib).
In case someone decides to take this on, I wrote a blog post back in March that shows how to use __init_subclass__() to do a rough approximation of what Guido is suggesting: https://snarky.ca/customizing-class-creation-in-python/ .
Based on my thinking on the topic while writing my blog post, the tricky bit is going to be deciding how to handle default values (i.e. if you set a default value like `attr: int = 42` on the class definition then you have `cls.attr` exist which might not be what you want if you would rather have the default value explicitly set on every instance but not fall through to the class (e.g. `del ins.attr; ins.attr` raises an AttributeError instead of falling through to `cls.attr`). You could remove the default from the class in your __init_subclass__(), but then you have to decide if that's too unexpected/magical for someone looking at the code.
And I too would be interested in seeing something like this, if for any other reason than to help people not to misuse NamedTuple for quick-and-dirty data objects in new APIs (NamedTuple is meant to help move old-style tuple-based APIs to a class-based one).
On Mon, May 15, 2017 at 4:05 AM, Nick Coghlan email@example.com wrote:
On 14 May 2017 at 17:12, Abdur-Rahmaan Janhangeer firstname.lastname@example.org wrote:
Whatever you all propose,
coming from a java and c++ background, OOP in python is quite
if you tell that i am not a python guy, then consider that current oop
does not reflect python's style of ease and simplicity
is __init__ really a good syntax choice?
That's a different question, and one with a well-structured third party solution: https://attrs.readthedocs.io/en/stable/
See https://mail.python.org/pipermail/python-ideas/2017-April/045514.html for some ideas on how something like attrs might be adapted to provide better standard library tooling for more concise and readable class definitions.
-- Nick Coghlan | email@example.com | Brisbane, Australia _______________________________________________ Python-ideas mailing list Pythonfirstname.lastname@example.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
-- --Guido van Rossum (python.org/~guido) _______________________________________________ Python-ideas mailing list Pythonemail@example.com https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/