Class Variable Access and Assignment
Antoon Pardon
apardon at forel.vub.ac.be
Fri Nov 4 03:08:42 EST 2005
Op 2005-11-03, Steven D'Aprano schreef <steve at REMOVETHIScyber.com.au>:
> On Thu, 03 Nov 2005 04:30:09 -0800, Paul Rubin wrote:
>
>> Steve Holden <steve at holdenweb.com> writes:
>>> > class A:
>>> > a = 1
>>> > b = A()
>>> > b.a += 2
>>> > print b.a
>>> > print A.a
>>> > Which results in
>>> > 3
>>> > 1
>>> >
>>> I don't suppose you'd care to enlighten us on what you'd regard as the
>>> superior outcome?
>>
>> class A:
>> a = []
>> b = A()
>> b.append(3)
>> print b.a
>> print a.a
>>
>> Compare and contrast.
>
>
> I take it then that you believe that ints like 1 should be mutable like
> lists? Because that is what the suggested behaviour implies.
No it isn't.
One other way, to implement the += and likewise operators would be
something like the following.
Assume a getnsattr, which would work like getattr, but would also
return the namespace where the name was found. The implementation
of b.a += 2 could then be something like:
ns, t = getnsattr(b, 'a')
t = t + 2
setattr(ns, 'a')
I'm not arguing that this is how it should be implemented. Just
showing the implication doesn't follow.
--
Antoon Pardon
More information about the Python-list
mailing list