By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,050 Members | 1,009 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,050 IT Pros & Developers. It's quick & easy.

defining classes

P: n/a
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 1h.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?

Thanks,
LeRoy

__________________________________________________ _______________
Express yourself instantly with MSN Messenger! Download today - it's FREE!
http://messenger.msn.click-url.com/g...ave/direct/01/

Sep 2 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
LeRoy Lee wrote:
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'


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

5
--
Michael Hoffman
Sep 2 '05 #2

P: n/a
On 2005-09-02, LeRoy Lee <l3****@hotmail.com> wrote:
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'


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


--
Grant Edwards grante Yow! I'm definitely not
at in Omaha!
visi.com
Sep 2 '05 #3

P: n/a
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

Sep 2 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.