Beginners question

gabrielmonnerat gabrielmonnerat at gmail.com
Fri Jul 17 23:06:31 EDT 2009


nohics nohics wrote:
> When defining your class methods, you /must/ explicitly list self as 
> the first argument for each method, including __init__. When you call 
> a method of an ancestor class from within your class, you /must/ 
> include the self argument. But when you call your class method from 
> outside, you do not specify anything for the self argument; you skip 
> it entirely, and Python automatically adds the instance reference for 
> you. I am aware that this is confusing at first; it's not really 
> inconsistent, but it may appear inconsistent because it relies on a 
> distinction (between bound and unbound methods) that you don't know 
> about yet.
>
> So, you have to do:
>
> class ClassName:
>     self.global_var = 1
self isn't exists in this context.

 >>> class ClassName:
...       self.global_var = 1
...       def some_methods(self):
...         print self.global_var
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in ClassName
NameError: name 'self' is not defined

If you want a variable of instance you can use __init__

 >>> class ClassName:
...       def __init__(self):
...           self.global_var = 1
...       def some_methods(self):
...           print self.global_var

Now "global_var" is created when ClassName is instantiated

 >>> ClassName.global_var
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: class ClassName has no attribute 'global_var'
 >>> c = ClassName()
 >>> c.global_var
1

>     def some_methos(self):
>         print self.global_var
>
> 2009/7/18 Ronn Ross <ronn.ross at gmail.com <mailto:ronn.ross at gmail.com>>
>
>     How do you define a global variable in a class. I tried this with
>     do success:
>     class ClassName:
>         global_var = 1
>        
>         def some_methos():
>             print global_var
>
>     This doesn't work. What am I doing wrong?
>
>     --
>     http://mail.python.org/mailman/listinfo/python-list
>
>




More information about the Python-list mailing list