Chris Rebert wrote:
> On Mon, Jul 6, 2009 at 1:29 AM, Lawrence
> D'Oliveiro<l...@geek-central.gen.new_zealand> wrote:
>> In message <mailman.2674.1246866966.8015.python-l...@python.org>, Tim Golden
>> wrote:
>>
>>> The difficulty here is knowing where to put such a warning.
>>> You obviously can't put it against the "++" operator as such
>>> because... there isn't one.
>> This bug is an epiphenomenon. :)
> 
> Well, like I suggested, it /could/ be made an operator (or rather, a
> lexer token) which just causes a compile/parse error.
> 
> Cheers,
> Chris

There are edge cases (level: very rare) where you legitimately want to
actually do that, e.g.:

class A(object):
    def __init__(self, arg):
        self.value = arg.value
    def __pos__(self):
        return B(self)
    def __neg__(self):
        return D(self)

class B(object):
    def __init__(self, arg):
        self.value = arg.value
    def __pos__(self):
        return C(self)
    def __neg__(self):
        return A(self)

class C(object):
    def __init__(self, arg):
        self.value = arg.value
    def __pos__(self):
        return D(self)
    def __neg__(self):
        return B(self)

class D(object):
    def __init__(self, arg):
        self.value = arg.value
    def __pos__(self):
        return A(self)
    def __neg__(self):
        return C(self)

def cons(val):
    class E(object):
        value = val
    return E()

>>> a = A(cons(10))
>>> +a
<__main__.B object at 0x7fbf723c8690>
>>> ++a
<__main__.C object at 0x7fbf723c8710>
>>> +++a
<__main__.D object at 0x7fbf723c8710>
>>> --a
<__main__.C object at 0x7fbf723c8710>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to