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" <gu...@python.org>: So it is only called by __init__ and not by __setattr__? On Fri, May 19, 2017 at 11:32 AM, Stephan Houben <stephan...@gmail.com> wrote: > 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" <gu...@python.org>: > > 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 <e...@trueblade.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 >>> >>> 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)
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/