<div dir="ltr">On Sat, Oct 13, 2012 at 10:18 AM, Steven D'Aprano <span dir="ltr"><<a href="mailto:steve@pearwood.info" target="_blank">steve@pearwood.info</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">[..]</div>
but I think that puts the emphasis on the wrong thing. If (and that's a big<br>
if) we did something like this, it should be a pair of methods __op__ and<br>
the right-hand version __rop__ which get called on the *operands*, not the<br>
operator/function object:<br>
<br>
def __op__(self, other, symbol)<span class="HOEnZb"><font color="#888888"><br>
<br></font></span></blockquote><div><br></div><div>I thought the operator should have a say in how it operates, e.g. the operater `dot` could call __dot__ in its operands.</div><div><br></div><div>class Vector:</div><div>

    def _dot(self, other):</div><div>        return sum([i * j for i, j in zip(self, other)])</div><div><br></div><div>class dot(operator):</div><div>    def __infix__(self, left, right):</div><div>        return left._dot(left, right)</div>

<div><br></div><div>>>>Vector([1,2,3]) dot Vector([3,4,5])</div><div>26</div><div><br></div><div><br></div><div><br></div><div>Making the declaration and import of operators more explicit than the `def __op__(self, other, symbol)` version. We could put [/, *, ., //, etc...] in __builtins__</div>

<div><br></div><div>Yuval</div></div></div>