I think it needs an explicit support in the type creation machinery (as
__slots__ itself has) to support descriptors and slots with the same name.
That would be tough, since __slots__ is currently implemented by creating a separate descriptor for each slot.
Thinking aloud, perhaps this could be done by setting __slots__ to a magical value, e.g.
class Point:
__slots__ = "__auto__"
x: float
y: float
This would be independent from the @dataclass decorator (though the decorator may have to be aware of the magic value).
If that's too wacky, we could also use a class keyword argument:
class Point(slots=True):
x: float
y: float
(Though arguably that's just as wacky. :-)