LOL have never used the match statement. Has been one of those features just outta reach. So close can taste it. But alas ....
Now py310 is here. Still not enthusiastic about it. But over time maybe will come around.
__slots__ = (...) or frozen. Same thing. Make the data class read-only reducing memory usage by 30-40%. Like the memory usage difference between tuple and list.
From experience, in stubs, __slots__ need to include "__weakref__". If frozen, then don't include "__weakref__".
How about this. Lets meet each other half way.
I'll stop thinking of the match statement as thorium reactor toxic waste.
And maybe you can take a read through of the frozen option for dataclasses.
Sound fair?