defining classes

Steve Horsley steve.horsley at gmail.com
Fri Sep 2 16:31:15 EDT 2005


LeRoy Lee wrote:
> I have been searching for the answer to this as it will determine how I 
> use classes.  Here are two bits of code.
> 
> class foo1:
>    def __init__(self, i):
>        self.r = i
>        self.j = 5
> 
>>> h = foo1(1)
>>> h.r
> 
> 1
> 
>>> h.j
> 
> 5
> 
> 
> Now take this example
> 
> class foo2:
>    def __init__(self):
>        self.j = 5
> 
>>> h = foo2()
>>> h.j
> 
> Traceback (most recent call last):
>  File "<stdin>", line 1, in ?
> AttributeError: foo2 instance has no attribute 'j'
> 
> I can't figure out why it is working this way.  I figure I must be 
> thinking about this wrong.  I was thinking that I could bind attributes 
> to the class from within methods using the self prefix.  According to 
> this example I can only when passing other info into the init.  Is there 
> a rule that I am just not aware off?  Am I totally off base (I am not 
> real experienced)?  What is the self prefix for then if not to bind up 
> the tree?
> 

It works for me.

 >>> class foo2:
...    def __init__(self):
...        self.j = 5
...
 >>> h = foo2()
 >>> h.j
5
 >>>

Are you sure you clicked the save button of the editor before 
running the code? (Been there, done that myself.)

Or if you're importing a module that contains the code, did you 
reload the module after editing the code and before creating a 
new class instance? (Been there, wasted lots of time myself.)


Steve




More information about the Python-list mailing list