[Python-ideas] Is there a good reason to use * for multiplication?
MRAB
python at mrabarnett.plus.com
Mon Oct 15 00:08:25 CEST 2012
On 2012-10-14 22:06, Joshua Landau wrote:
> On 14 October 2012 20:57, Mike Meyer <mwm at mired.org
> <mailto:mwm at mired.org>> wrote:
>
> On Sun, 14 Oct 2012 07:40:57 +0200
> Yuval Greenfield <ubershmekel at gmail.com
> <mailto:ubershmekel at gmail.com>> wrote:
>
> > On Sun, Oct 14, 2012 at 2:04 AM, MRAB <python at mrabarnett.plus.com
> <mailto:python at 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!
>
> <mike
>
>
> 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.
>
I don't think we should change what happens inside a string literal.
Consider what would happen if you wanted to write "\\u0190". It would
convert that into "\Ɛ".
IIRC, Java can suffer from that kind of problem because \uXXXX is
treated as that codepoint wherever it occurs.
More information about the Python-ideas
mailing list