[Python-ideas] Add recordlcass to collections module

Chris Barker chris.barker at noaa.gov
Tue Sep 4 15:03:23 EDT 2018


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.

Personally, I don’t see it.

-CHB

On Tue, Sep 4, 2018 at 2:04 PM Zaur Shibzukhov <szport at gmail.com> wrote:

>
>
> ---
> *Zaur Shibzukhov*
>
>
> 2018-09-03 1:02 GMT+03:00 Wes Turner <wes.turner at gmail.com>:
>
>>
>> On Sunday, September 2, 2018, Zaur Shibzukhov <szport at gmail.com> wrote:
>>
>>>
>>>
>>> ---
>>> *Zaur Shibzukhov*
>>>
>>>
>>> 2018-09-02 22:11 GMT+03:00 Wes Turner <wes.turner at 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 <szport at 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... at python.org
>>>>>> https://mail.python.org/mailman/listinfo/python-ideas
>>>>>> Code of Conduct: http://python.org/psf/codeofconduct/
>>>>>>
>>>>>
>>>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at 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.Barker at noaa.gov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180904/93ba9e9d/attachment.html>


More information about the Python-ideas mailing list