If you don't want the overlapping with the existing syntax angle brackets can be used:
match eggs: case Spam<a=1, b=2>: ... On Sat, Nov 21, 2020 at 7:31 PM David Mertz <me...@gnosis.cx> wrote: > On Sat, Nov 21, 2020 at 12:23 PM Steven D'Aprano <st...@pearwood.info> > wrote: > >> Clearly Spam(a=1, b=2) does not necessarily result in an instance with >> attributes a and b. But the pattern `Spam(a=1, b=2)` is intended to be >> equivalent to (roughly): >> >> if (instance(obj, Spam) >> and getattr(obj, a) == 1 >> and getattr(obj, b) == 2) >> >> it doesn't imply that obj was *literally* created by a call to >> the constructor `Spam(a=1, b=2)`, or even that this call would be >> possible. >> > > I think this explanation makes me not worry about the fact that `Spam(a=1, > b=2)` in a pattern looks a lot like a constructor. Like some other > commenters, I was vaguely bothered that the identical spelling might have > these different meanings in different contexts. But I think a match case > just clearly enough IS a different context that using slightly different > intuitions is no real conceptual stretch for remembering or teaching it. > > As a strawman, we could use different syntax for "match the thing of class > Spam that has attributes with these values: > > match eggs: > case Spam[a=1, b=2]: ... > > Or: > > match eggs: > case Spam{a=1, b=2}: ... > > Well, the square brackets COULD mean something different if PEP 637 is > adopted. But even supposing the curly braces could be fit into the > grammar. Yes, it sort of suggests the connection between dictionaries and > Spam.__dict__. But it still reads as "this is something special that I > have to think about a little differently." > > Even where there are capture variables, I think I'd be completely > comfortable thinking about the different context for: > > match eggs: > case Spam(a=x, b=2): ... > > -- > The dead increasingly dominate and strangle both the living and the > not-yet born. Vampiric capital and undead corporate persons abuse > the lives and control the thoughts of homo faber. Ideas, once born, > become abortifacients against new conceptions. > _______________________________________________ > Python-Dev mailing list -- python-dev@python.org > To unsubscribe send an email to python-dev-le...@python.org > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/XSRVX2NTDGUF7CWTPR5SHIOAQPWNXXYZ/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- Thanks, Andrew Svetlov
_______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/45JLJCSQRZ3SCVV6EP546W4P5LBYNUKM/ Code of Conduct: http://python.org/psf/codeofconduct/