[issue33796] dataclasses.replace broken with class variables
Eric V. Smith
report at bugs.python.org
Thu Jun 7 11:15:29 EDT 2018
Eric V. Smith <eric at trueblade.com> added the comment:
Thanks for the report. This is the same error you get when using any non-field:
>>> @dataclass
... class C:
... i: int
...
>>> c = C(4)
>>> replace(c, i=3)
C(i=3)
>>> replace(c, j=3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\home\eric\local\python\cpython\lib\dataclasses.py", line 1179, in replace
return obj.__class__(**changes)
TypeError: __init__() got an unexpected keyword argument 'j'
I think the TypeError is correct in both cases. The error message might not be the best.
Are you suggesting that this shouldn't raise a TypeError? Since a ClassVar is not an instance variable, I don't think it makes any sense to replace() it.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue33796>
_______________________________________
More information about the Python-bugs-list
mailing list