[issue32428] dataclasses: make it an error to have initialized non-fields in a dataclass

Ivan Levkivskyi report at bugs.python.org
Wed Dec 27 19:19:31 EST 2017


Ivan Levkivskyi <levkivskyi at gmail.com> added the comment:

> I'm not sure I understand the distinction.

Initially I thought about only flagging code like this:

@dataclass
class C:
    x = field()

But not this:

@dataclass
class C:
    x = 42

Now I think we should probably flag both as errors.

> How do we only pick out `y` and probably `prop`, and ignore the rest, without being overly fragile to new things being added? I guess ignoring dunders and things in `__annotations__`. Is that close enough?

We had a similar problem while developing Protocol class (PEP 544). Currently we just a have a whitelist of names that are skipped:

'__abstractmethods__', '__annotations__', '__weakref__', '__dict__',
'__slots__', '__doc__', '__module__'

(plus some internal typing API names)

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue32428>
_______________________________________


More information about the Python-bugs-list mailing list