Hi Guido,
Yes indeed, *only* invoked by __init__ .
See my test below.
=====
import attr
@attr.s
class Foo:
x = attr.ib(convert=str)
foo = Foo(42)
print(repr(foo.x))
# prints '42'
foo.x = 42
print(repr(foo.x))
# prints 42
======
Not sure if this is a good design but it matches the docs.
Stephan
Op 19 mei 2017 20:36 schreef "Guido van Rossum"
Let me quote the attrs docs:
"" convert (callable) – callable() that is called by attrs-generated __init__ methods to convert attribute’s value to the desired format. It is given the passed-in value, and the returned value will be used as the new value of the attribute. The value is converted before being passed to the validator, if any. """
So the signature is essentially:
self.myattrib = callable (myattrib)
Stephan
Op 19 mei 2017 20:25 schreef "Guido van Rossum"
: For people who don't want to click on links:
1. 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).
2. Not subclassed from tuple. I have been bitten by this subclassing when trying to set up singledispatch on sequences and also on my classes.
3. Easily allow to specify default values. With namedtuple this requires overriding __new__.
4. 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
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
Eric.
_______________________________________________ Python-ideas mailing list Python-ideas@python.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 Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
-- --Guido van Rossum (python.org/~guido)