[Python-Dev] Second post: PEP 557, Data Classes
Eric V. Smith
eric at trueblade.com
Tue Nov 28 02:41:54 EST 2017
On 11/27/2017 10:51 AM, Guido van Rossum wrote:
> Following up on this subthread (inline below).
> Didn't we at one point have something like
>
> isinstance(other, self.__class__) and fields(other) == fields(self) and
> <all individual fields match>
>
> (plus some optimization if the types are identical)?
>
> That feels ideal, because it means you can subclass Point just to add
> some methods and it will stay comparable, but if you add fields it will
> always be unequal.
One thing this doesn't let you do is compare instances of two different
subclasses of a base type:
@dataclass
class B:
i: int
@dataclass
class C1(B): pass
@dataclass
class C2(B): pass
You can't compare C1(0) and C2(0), because neither one is an instance of
the other's type. The test to get this case to work would be expensive:
find the common ancestor, and then make sure no fields have been added
since then. And I haven't thought through multiple inheritance.
I suggest we don't try to support this case.
Eric.
More information about the Python-Dev
mailing list