Confusion About Classes

Steven Bethard steven.bethard at gmail.com
Thu Dec 30 02:19:08 EST 2004


M.E.Farmer wrote:
> there are no variables in python

While it's true that in Python it's more appropriate to talk about names 
and bindings instead of variables and values, there is a parallel, and 
you can get a fair distance without having to fully convert to the 
names/bindings terminology.

That being said, understanding this part of Python can aid enormously in 
working with the language.  If you'd like to think of it in C terms, 
basically every 'name' in Python is a pointer to a PyObject, and 'names' 
(as pointers) are always passed by value -- that is, you get a copy of 
the pointer, but not a copy of the object.

> And before you go and wipe out all those double underscores note that
> python uses double underscores as special methods and other internal
> details( read the docs).

Just to clarify, I was only talking about removing leading underscores 
for instance variables, e.g. changing:

     self.__xyz

to

     self.xyz

As M.E.Farmer mentioned, you can't remove underscores on special method 
names like __init__.  However, when you're declaring an instance 
variable, e.g.:

     self.__xyz = True

then you're choosing the name here, so you can name it whatever you 
want.  The only reason to use leading double-underscores is if you want 
Python to name-mangle the variable so it's not (easily) accessible from 
subclasses.  In most cases, this is unnecessary.

Steve



More information about the Python-list mailing list