Class Variable Access and Assignment
Antoon Pardon
apardon at forel.vub.ac.be
Thu Nov 3 08:01:40 EST 2005
Op 2005-11-03, Steven D'Aprano schreef <steve at REMOVETHIScyber.com.au>:
> On Thu, 03 Nov 2005 11:55:06 +0000, Antoon Pardon wrote:
>
>> No matter wat the OO model is, I don't think the following code
>> exhibits sane behaviour:
>>
>> class A:
>> a = 1
>>
>> b = A()
>> b.a += 2
>> print b.a
>> print A.a
>>
>> Which results in
>>
>> 3
>> 1
>
> Seems perfectly sane to me.
>
> 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.
> Why do you expect
> b.a += 2 to give a different result?
I didn't know I did.
> Since ints are immutable objects, you shouldn't expect the value of b.a
> to be modified in place, and so there is an assignment to b.a, not A.a.
You are now talking implementation details. I don't care about whatever
explanation you give in terms of implementation details. I don't think
it is sane that in a language multiple occurence of something like b.a
in the same line can refer to different objects
I think it even less sane, if the same occurce of b.a refers to two
different objects, like in b.a += 2
--
Antoon Pardon.
More information about the Python-list
mailing list