Here's an idea I was toying with in thinking about the problem this evening. Currently, python complains if you try to add a class member that will conflict with a slot:
class C: ... __slots__="x" ... x=1 ... Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 'x' in __slots__ conflicts with class variable
What if the slots machinery were changed so that there was a warning propagated instead, and the conflicting member value(s) were saved in some appropriate place in the class namespace? Maybe something like __slot_conflicts__, or something like that.
class C: ... __slots__="x" ... x=1 ... C.__slot_conflicts__["x"] 1
This would give the decorator the opportunity to find the stuff that was put in those fields, and sort out the class definition in an expected way. --- Ricky. "I've never met a Kentucky man who wasn't either thinking about going home or actually going home." - Happy Chandler On Fri, Sep 27, 2019 at 9:39 PM Andrew Barnert via Python-ideas < python-ideas@python.org> wrote:
On Sep 27, 2019, at 17:20, Guido van Rossum
wrote: Thinking aloud, perhaps this could be done by setting __slots__ to a
magical value, e.g.
class Point: __slots__ = "__auto__" x: float y: float
Would this confuse any existing automated tools (or dataclass-like libraries) into thinking you’re declaring slots named _, a, u, t, and o?
(I don’t think there’s any danger of confusing human readers, at least.)
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/TPCZH4... Code of Conduct: http://python.org/psf/codeofconduct/