On Mon, Aug 24, 2020 at 1:52 PM Christopher Barker <python...@gmail.com> wrote:
> I’m not at all sure this Idea is possible, > > But even if so, there’s a real trick here. The [] operator is not a > function call, it is a special operator that “takes” a single expression. > > Thing[a, b] is not “getting” two objects, it is getting a single tuple, > which is created by the comma. That is, expression: > > a,b > > Has the same value as: > > (a, b) > > Or > > tuple(a,b) > > Which means: > > t = tuple(a, b) > thing[a, b] > > Is exactly the same as > > thing[a,b] > > And that equivalency needs to be maintained. > > In practice, two common use cases treat the resulting tuple essentially > semantically differently: > > 1) Using tuples as dict keys i.e. a single value that happens to be a > tuple is a common practice. > > 2) numpy uses the elements of a tuple as separate indices. > > I don’t think the interpreter would have any way to know which of these is > intended. > > -CHB > The interpreter wouldn't. I'm talking about adding this knowledge of signature dependent semantics to `type`. To implement this, under the hood `type` would detect the signatures with different semantics, and choose to wrap the functions with those signatures in a closure based on the intended semantic meaning. Then everything proceeds as it does today. All of this is possible today, of course, using a metaclass, or using a regular class and the __init_subclass__ method, or using decorators. But my suggestion is to roll it into type. --- Ricky. "I've never met a Kentucky man who wasn't either thinking about going home or actually going home." - Happy Chandler
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@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/OTEN5EMDBGG5WEO4P6NWIUAYIHSM5MGB/ Code of Conduct: http://python.org/psf/codeofconduct/