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