access private field in python 2.4

Steven Bethard steven.bethard at gmail.com
Wed Jan 26 21:31:47 CET 2005


ajikoe at gmail.com wrote:
> Hello, if we want to access the private member of object we use the
> classname, it doesn't make sense. For example:
> I have class A:
> 
> class A:
> def __init__(self, i):
> self.__i = i;
> pass
> 
> __i = 0
> 
> a = A(22);
> b = A(33);
> 
> How can I get  field i in object a and how can I get field i in object
> b?

py> class A:
...     def __init__(self, i):
...         self.__i = i;
...
py> a = A(22)
py> a._A__i
22

> Beside I try to call:
> print _A__i #fail  this create  error

Looks like you're confused about the difference between instances and 
modules.  The code:
     print _A__i
asks Python to print the attribute _A__i of the given module.  But you 
want the attribute _A__i of the instance 'a'.  As you can see in my 
code, if you want the attribute of the instance, you need to specify it 
as such.

As an additional reminder, you generally *shouldn't* be accessing 
"private" variables of a class.  There's a reason they're declared 
private. ;)

Steve



More information about the Python-list mailing list