For people who don't want to click on links:
Allow hash and equality to be based on object identity, rather than structural identity, this is very important if one wants to store un-hashable objects in the instance. (In my case: mostly dict's and numpy arrays).
Not subclassed from tuple. I have been bitten by this subclassing when trying to set up singledispatch on sequences and also on my classes.
Easily allow to specify default values. With namedtuple this requires overriding __new__.
Easily allow to specify a conversion function. For example I have some code like below: note that I can store a numpy array while keeping hashability and I can make it convert to a numpy array in the constructor.
@attr.s(cmp=False, hash=False) class SvgTransform(SvgPicture): child = attr.ib() matrix = attr.ib(convert=numpy.asarray)
I have one question about (4) -- how and when is the conversion function used, and what is its signature?
On Fri, May 19, 2017 at 5:42 AM, Eric V. Smith email@example.com wrote:
Could you point me to this 4-point list of Stephan's? I couldn't find
anything in the archive that you might be referring to.
Never mind, I found them here: https://mail.python.org/pipermail/python-ideas/2017-May/045679.html
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)