trying to grasp OO : newbie Q?

Azolex cretin at des.alpes.ch
Thu Apr 13 10:30:23 EDT 2006


mitsura at skynet.be wrote:
> Hi,
> 
> I just started with Python and I am new to OO programming.
> Here is a simple code:
> "
> class Obj:
> 	myVar = 1
> 
> 	def __init__(self):
> 		myVar = 2
> 
> #
> 
> 
> myObj = Obj()
> 
> print myObj.myVar
> "
> 
> The output is of this script is '1'. I would except it to be '2'.
> I not understanding something fundamentally here.

You want to replace "myVar = 2" by "self.myVar = 2"
to get the result you expect.

> 
> Can anybody explain?
> 

Your "myVar = 1" sets a variable in the namespace of the class

Your "myVar = 2" sets a variable in the local frame of execution of the 
__init__ method, that is invisible outside that frame

Putting "self.myVar = 2" will set a variable in the instance dict that 
will shadow the class variable of the same name when you access myObj.myVar

hth



More information about the Python-list mailing list