On Tue, Feb 20, 2018 at 1:37 PM, Eric V. Smith <e...@trueblade.com> wrote:
> 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. > But then the class would also inherit a bunch of misfeatures from tuple (like being indexable and having a length). It would be nicer if it used __slots__ instead. (Also, the problem with __slots__ is the same as the problem with inheriting from tuple, and it should just be solved right, somehow.) -- --Guido van Rossum (python.org/~guido)
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com