Eric V. Smith <e...@trueblade.com> added the comment:

A related issue is that dataclasses derived from frozen dataclasses are 
automatically "promoted" to being frozen.

>>> @dataclass(frozen=True)
... class A:
...     i: int
...
>>> @dataclass
... class B(A):
...     j: int
...
>>> b = B(1, 2)
>>> b.j = 3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\home\eric\local\python\cpython\lib\dataclasses.py", line 452, in 
_frozen_setattr
    raise FrozenInstanceError(f'cannot assign to field {name!r}')
dataclasses.FrozenInstanceError: cannot assign to field 'j'

If this can't be addressed before 3.7, maybe it should be an error to declare B 
as non-frozen and then we can properly fix it in a future release.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32953>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to