stephanh42 at gmail.com
Fri May 19 14:49:08 EDT 2017
Yes indeed, *only* invoked by __init__ .
See my test below.
x = attr.ib(convert=str)
foo = Foo(42)
# prints '42'
foo.x = 42
# prints 42
Not sure if this is a good design but it matches the docs.
Op 19 mei 2017 20:36 schreef "Guido van Rossum" <guido at python.org>:
So it is only called by __init__ and not by __setattr__?
On Fri, May 19, 2017 at 11:32 AM, Stephan Houben <stephanh42 at gmail.com>
> 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)
> Op 19 mei 2017 20:25 schreef "Guido van Rossum" <guido at 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 <eric at trueblade.com>
>>> 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:
>>> Python-ideas mailing list
>>> Python-ideas at python.org
>>> Code of Conduct: http://python.org/psf/codeofconduct/
>> --Guido van Rossum (python.org/~guido)
>> Python-ideas mailing list
>> Python-ideas at python.org
>> Code of Conduct: http://python.org/psf/codeofconduct/
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-ideas