Steven D'Aprano writes:
It give me no clue what it's supposed to mean.
That's harsh. No clue *at all*?
What harsh? Frank, yes.
As for the question, of course not "*at all*", obviously it's an operator that does something. But what and to which, no clue, except from the context of what you're trying to accomplish -- not from the notation itself.
The variety of examples and hints you give just makes it worse.
And neither is the `self` argument to methods. But we learn that self is implicitly provided as if by magic :-)
No, it's explicitly provided by the attribute reference syntax that binds a positional parameter when the attribute is a method. Binding positional parameters is a concept familiar from all programming languages I know of (except Haskell, which has only one parameter so "position" is a vacuous concept). I will remind you that ".attribute" syntax to avoid typing self in method definitions and similar anaphoric syntaxes for avoiding typing the name of a object whose attributes are repeatedly accessed have been repeatedly vetoed.
Another similar example of magic is decorator syntax:
I can't explain why that doesn't bother me, but it doesn't. It's also much more powerful. Not the syntax itself, but what decorators can do.
The thing is, regardless of whether we use a symbol or a keyword, the functionality here is going to be magical. That's its point: it is to avoid the need to write the name twice.
Yes, I could learn this magic. No, I find the syntaxes proposed so far unintuitive, by which I mean quite arbitrary and lacking connotations that lead to the intended meaning. So, not good enough.
-1 on forward arrow syntax: as you point out, mention of a variable injects that name into the appropriate namespace, and there's important. Extremely concise notation for variable evaluation is incredibly important, and having that string in locals() or globals() is necessary for introspection. Thus variable *mention* does the injection.
But the other syntaxes that inject names of identifiers into namespaces are all statements.
-0.5 on keywords: this doesn't clear the bar for keyword introduction yet AFAICS. Not even if it's only used in stubfiles.