Static variable vs Class variable

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Tue Oct 9 18:43:16 EDT 2007


On Tue, 09 Oct 2007 19:46:35 +0000, Marc 'BlackJack' Rintsch wrote:

> On Tue, 09 Oct 2007 18:08:34 +0000, Steven D'Aprano wrote:
> 
>>>>> L = []
>>>>> id(L)
>> 3083496716L
>>>>> L += [1]
>>>>> id(L)
>> 3083496716L
>> 
>> It's the same L, not rebound at all.
> 
> It *is* rebound.  To the same object, but it *is* assigned to `L` and
> not just mutated in place.

Picky picky.

Yes, technically there is an assignment of L to itself. I was sloppy to 
say "not rebound at all", because when you write an augmented assignment 
method you have to return self if you want to implement in-place 
mutation. But I hardly call "rebinding to itself" any sort of rebinding 
worth the name :)

Diez is still wrong though, even though I overstated my case. See my 
reply to his post.



[snip code]
> If it was just mutation then `B.a` would have triggered an
> `AttributeError`.

Why? Don't Python classes have inheritance?

(That's a rhetorical question. Yes they do, and no B.a would not raise 
AttributeError because it would inherit from A.)


-- 
Steven.



More information about the Python-list mailing list