On 9/4/2018 3:03 PM, Chris Barker via Python-ideas wrote:
Chiming in here:
dataclasses was just added to the stdlib.
I understand that record class is not the same thing, but the use cases
do overlap a great deal.
So I think the cord goal for anyone that wants to see this in the stdlib
is to demonstrate tbat recordclass
Adds significant enough value to justify something so similar.
I've seen three things mentioned that might be different from dataclasses:
- instance size
- speed (not sure of what: instance creation? field access?)
- iterating over fields
But I've not seen concrete examples of the first two where dataclasses
doesn't perform well enough. For the third one, there's already a thread
on this mailing list: "Consider adding an iterable option to dataclass".
I'm contemplating adding it.
Personally, I don’t see it.
I'm skeptical, too.
Eric
-CHB
On Tue, Sep 4, 2018 at 2:04 PM Zaur Shibzukhov <szp...@gmail.com
<mailto:szp...@gmail.com>> wrote:
---
/Zaur Shibzukhov/
2018-09-03 1:02 GMT+03:00 Wes Turner <wes.tur...@gmail.com
<mailto:wes.tur...@gmail.com>>:
On Sunday, September 2, 2018, Zaur Shibzukhov <szp...@gmail.com
<mailto:szp...@gmail.com>> wrote:
---
/Zaur Shibzukhov/
2018-09-02 22:11 GMT+03:00 Wes Turner <wes.tur...@gmail.com
<mailto:wes.tur...@gmail.com>>:
Does the value of __hash__ change when attributes of a
recordclass change?
Currently recordclass's __hash__ didn't implemented.
https://docs.python.org/3/glossary.html#term-hashable
https://docs.python.org/3/reference/datamodel.html#object.__hash__
http://www.attrs.org/en/stable/hashing.html
There is correction:
recordclass and it's base memoryslots didn't implement __hash__, but
memoryslots implement richcompare (almost as python's list).
On Sunday, September 2, 2018, Zaur Shibzukhov
<szp...@gmail.com <mailto:szp...@gmail.com>> wrote:
As the author of `recordclass` I would like to shed
some light...
Recorclass originated as a response to the
[question](https://stackoverflow.com/questions/29290359/existence-of-mutable-named-tuple-in-python/29419745#29419745)
on stackoverflow.
`Recordclass` was conceived and implemented as a
type that, by api, memory and speed, would be
completely identical to` namedtuple`, except that it
would support an assignment in which any element
could be replaced without creating a new instance,
as in ` namedtuple`. Those. would be almost
identical to `namedtuple` and support the assignment
(` __setitem__` / `setslice__`).
The effectiveness of namedtuple is based on the
effectiveness of the `tuple` type in python. In
order to achieve the same efficiency it was
necessary to create a type `memoryslots`. Its
structure (`PyMemorySlotsObject`) is identical to
the structure of` tuple` (`PyTupleObject`) and
therefore takes up the same amount of memory as` tuple`.
`Recordclass` is defined on top of` memoryslots`
just like `namedtuple` above` tuple`. Attributes are
accessed via a descriptor (`itemgetset`), which
supports both` __get__` and `__set__` by the element
index.
The class generated by `recordclass` is:
`` `
from recordclass import memoryslots, itemgetset
class C (memoryslots):
__slots__ = ()
_fields = ('attr_1', ..., 'attr_m')
attr_1 = itemgetset (0)
...
attr_m = itemgetset (m-1)
def __new __ (cls, attr_1, ..., attr_m):
'Create new instance of {typename} ({arg_list})'
return memoryslots .__ new __ (cls, attr_1, ..., attr_m)
`` `
etc. following the `namedtuple` definition scheme.
As a result, `recordclass` takes up as much memory
as` namedtuple`, it supports quick access by
`__getitem__` /` __setitem__` and by attribute name
via the protocol of the descriptors.
Regards,
Zaur
суббота, 1 сентября 2018 г., 10:48:07 UTC+3
пользователь Martin Bammer написал:
Hi,
what about adding recordclass
(https://bitbucket.org/intellimath/recordclass)
to the collections module
It is like namedtuple, but elements are writable
and it is written in C
and thus much faster.
And for convenience it could be named as namedlist.
Regards,
Martin
_______________________________________________
Python-ideas mailing list
python...@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct:
http://python.org/psf/codeofconduct/
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org <mailto:Python-ideas@python.org>
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
chris.bar...@noaa.gov <mailto:chris.bar...@noaa.gov>
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/