On 14 October 2012 20:57, Mike Meyer <mwm@mired.org> wrote:
On Sun, 14 Oct 2012 07:40:57 +0200
Yuval Greenfield <ubershmekel@gmail.com> wrote:

> On Sun, Oct 14, 2012 at 2:04 AM, MRAB <python@mrabarnett.plus.com> wrote:
> > If it's more than one codepoint, we could prefix with the length of the
> > codepoint's name:
> >
> > def __12CIRCLED_PLUS__(x, y):
> >     ...
> >
> >
> That's a bit impractical, and why reinvent the wheel? I'd much rather:
> def \u2295(x, y):
>     ....
> So readable I want to read it twice. And that's not legal python today so
> we don't break backwards compatibility!

Yes, but we're defining an operator for instances of the class, so it
needs the 'special' method marking:

def __\u2295__(self, other):

Now *that's* pretty!


I much preferred your first choice:
def __$⊕__(self, other):

But to keep the "$" unused we can write:
def __op_⊕__(self, other):
(new methods will take precedence over the older __add__ and so forth)

What we can do then is use the "\u" syntax to let people without unicode editors have accessibility:
def __op_\u2295__(self, other):
...later in the code...
new = first \u2295 second

Which adds consistency whereas before we could only use that in specific circumstances (inside strings), reducing cognitive burden.