Antoon Pardon <[EMAIL PROTECTED]> writes:

> Op 2005-11-03, venk schreef <[EMAIL PROTECTED]>:
> > You see,
> >      The seen behavior is due to the result of python's name
> > binding,scoping scheme.
> 
> I know what causes the behaviour. But I still think it is
> not sane behaviour.
> 
> 
> > ...
> >
> > the same thing happens in the case of b.a = b.a + 2 .... search for b.a
> > not found, read the value from the enclosing scope (of the class
> > object).... then assign b.a to the local scope, with the value 3.
> 
> This is an explanation depending on a specific implementation.
> 
> Now can you give me a language design argument that supports the 
> idea that in "b.a = b.a + 2" b.a refers to two different objects.
> 
> And even if you could do that, can you give such an argument that
> in "b.a += 2" that one occurence of b.a should refer to two different
> objects.

Your problem is a namespace conflict together with a certain
stubborness about lookup order :-)

It is really simple. When you say b.a then the instance variable 'a'
is looked up first. If it does not exist then a class variable lookup
is done.

Remember, Python is a dynamic language.

It is all according to how things have been in Python for a long time.

The real issue here is that you should propery name class variables so
that there can't be any confusion about class or instance scope. I use
all uppercase identifiers for class variables for example.

 S.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to