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