Op 2005-11-03, Mike Meyer schreef <[EMAIL PROTECTED]>:
> Antoon Pardon <[EMAIL PROTECTED]> writes:
>>> What would you expect to get if you wrote b.a = b.a + 2?
>> I would expect a result consistent with the fact that both times
>> b.a would refer to the same object.
>
> Except they *don't*. This happens in any language that resolves
> references at run time.

Python doesn't resolve references at run time. If it did the following
should work.

a = 1
def f():
  a = a + 1

f()

But letting that aside. There is still a difference between resolving
reference at run time and having the same reference resolved twice
with each resolution a different result.

> Changing that would be changing a fundamental
> - and *important* - feature of Python. Arbitrary restrictions to
> prevent a single case of this from doing something people who aren't
> used to suvh behavior are kludges, and would constitute a wart on the
> language, pure and simple.

Python already has its warts. If you want to argue that fixing this
would make a bigger wart then the wart it is now. Fine I will accept
that.

> If you think this is bad, you should consider Jensen's device. It uses
> call-by-name, which Python doesn't have.

Actually, I would have thought it very interesting should python 
have provided some choice in parameter semantics.


>> I think it even less sane, if the same occurce of b.a refers to two
>> different objects, like in b.a += 2
>
> That's a wart in +=, nothing less. The fix to that is to remove +=
> from the language, but it's a bit late for that.
>
>      <mike

Well we agree that there is a wart somewhere.

-- 
Antoon Pardon
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to