[Python-Dev] Dataclasses, frozen and __post_init__

Eric V. Smith eric at trueblade.com
Tue Feb 20 16:37:33 EST 2018
On 2/17/2018 2:35 PM, Guido van Rossum wrote:
> PS. I have to ponder why frozen dataclasses don't use `__new__`.

As I'm sure everyone is now aware after the rest of this discussion: 
it's because the returned object isn't really immutable.

That said, I have threatened to create a decorator similar to 
typing.NamedTuple that has the @dataclass features (except maybe 
__post_init__) and returns a class that does inherit from tuple, in 
which case it really would use `__new__`. I'll save that for 3.8, if it 
ever happens. There's a lot there to think about, first. For now, 
typing.NamedTuple is the way to go if you want something based on 
namedtuple yet using type hints.

Eric


More information about the Python-Dev mailing list