[Python-ideas] Add recordlcass to collections module

Steven D'Aprano steve at pearwood.info
Sun Sep 2 19:49:42 EDT 2018


On Sun, Sep 02, 2018 at 10:56:50PM +0200, Martin Bammer wrote:

> Compared to dataclass:
> dataclass wins only on the topic object size. When it comes to speed and 
> functionality (indexing, sorting) dataclass would be my last choice.

I see no sign that recordclass supports sorting. (But I admit that I 
haven't tried it.)

What would it mean to sort a recordclass?

Person = recordclass('Person', 'personalname familyname address')
fred = Person("Fred", "Anderson", "123 Main Street")
fred.sort()
print(fred)

=> output:
Person(personalname='123 Main Street', familyname='Anderson', address='Fred')


[...]
> Adding new items:
> This is not possible with namedtuple and also not possible with 
> recordclass. I see no reason why a namedlist should support this, 

If you want to change the name and call it a "list", then it needs to 
support the same things that lists support.


> because with these object types you define new object types and these 
> types should not change.

Sorry, I don't understand that. How do you get "no insertions" from 
"can't change the type"? A list remains a list when you insert into it.

In case it isn't clear, I think there is zero justification for renaming 
recordclass to namedlist. I don't think "named list" makes sense as a 
concept, and recordclass surely doesn't implement a list-like interface.

As for the idea of adding a recordclass or mutable-namedtuple or 
whatever to the stdlib, the idea seems reasonable but its not clear to 
me that dataclass wouldn't be suitable.


-- 
Steve


More information about the Python-ideas mailing list