defining classes

L

LeRoy Lee

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
5


Now take this example

class foo2:
def __init__(self):
self.j = 5
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?

Thanks,
LeRoy

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
 
M

Michael Hoffman

LeRoy said:
class foo2:
def __init__(self):
self.j = 5


Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: foo2 instance has no attribute 'j'

Try again:
.... def __init__(self):
.... self.j = 5
....5
 
G

Grant Edwards

Now take this example

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

Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: foo2 instance has no attribute 'j'

Works fine for me either "batch" mode:

$ cat testit.py
class foo2:
def __init__(self):
self.j = 5

h = foo2()
print h.j

$ python testit.py
5

or interactivly:

Python 2.3.4 (#2, Aug 25 2005, 10:06:55)
[GCC 3.4.1 (Mandrakelinux 10.1 3.4.1-4mdk)] on linux2
Type "help", "copyright", "credits" or "license" for more information. ... def __init__(self):
... self.j = 5
...
 
S

Steve Horsley

LeRoy said:
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


5


Now take this example

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


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.
.... def __init__(self):
.... self.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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,822
Latest member
israfaceZa

Latest Threads

Top