New submission from Craig Coleman :
In a test, dataclasses generate an __eq__ function appears to be wrong.
@dataclass
class C:
pass
class K:
pass
a = C()
b = C()
c = K()
d = K()
(a is b) # False
(a == b) # True # Incorrect, Why?
(c is d) # False
(c == d) # False # Correct
Craig Coleman added the comment:
Seems I learned a python lesson today.
I've put myself back in python school and done some reading on a) the code
behind dataclasses, b) PEP 557 and c) the doc'n for __eq__.
After all the reading I've realised this I'd been making some as
Craig Coleman added the comment:
>From https://docs.python.org/3/reference/datamodel.html#object.__hash__
User-defined classes have __eq__() and __hash__() methods by default; with
them, all objects compare unequal (except with themselves) and x.__hash__()
returns an appropriate value s