Class Variable Access and Assignment

Steve Holden steve at holdenweb.com
Thu Nov 3 23:53:28 EST 2005


Graham wrote:
> Thanks to all of you for your reply's i had no idea it would get this
> sort of response,
> i've read through most of the posts and it seems that its a active
> topic.
> 
> My question remains however, i suppose i'm not familiar with how this
> functions in
> other languages, but what is the common way of referring to a class
> variable.
> 
> is <class>.<var> the norm?
> or <instance>.<var> the norm.
> 
Let me try to give a simple answer to a simple question before you begin 
to feel that we are all barmy and maybe Perl would be an easier 
alternative :-)

Under normal circumstances, yes, if you want to reference and/or modify 
a value that's intended to be shared amongst all instances of a given 
class you would normally refer to that as

    classname.var

and such a reference will work inside any of the class's methods.

Inside the class body (but outside any method body) the same reference 
can be written as

     var

> I just seems to me that <instance>.<var> shouldn't defer to the class
> variable if
> an instance variable of the same name does not exists, it should, at
> least how i
> understand it raise an exception.
> 
> Is my thinking way off here?
> 
It's a long way from how Python is designed, because name resolution in 
Python will look in an instance's class (and then the class's 
superclass, and so on until object is reached, which is at the top of 
all modern class hierarchies) unless the name is first found in the 
instance's namespace.

That's just the way Python was designed. Like it or loathe it, it's too 
late to change now. <shrug>. Some languages only use such a technique 
for resolving the names associated with methods, but this isn't 
comp.lang.someotherlanguage :-)

pragmatical-ly y'rs  - steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC                     www.holdenweb.com
PyCon TX 2006                  www.python.org/pycon/




More information about the Python-list mailing list