function call problem in class?

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Wed Nov 14 09:10:16 CET 2007


En Wed, 14 Nov 2007 04:51:57 -0300, Davy <zhushenli at gmail.com> escribió:

> I have write a simple class, I want the function two() to call private
> function __one(), but there is an error :
> NameError: global name '_simple__one' is not defined, how to work
> around it
>
> class simple:
>     def __one(self):
>         print "Hello"
>     def two(self):
>         __one()
>         print "world"
>
> if __name__ == '__main__':
>     s = simple()
>     s.two()

Note that your problem is not related to mangled names: replacing __one by  
one raises a similar exception.
Remember that "self" is not implicit: you must use self.__one()

"private" methods (and atributes in general) use a single underscore:  
_one. Double underscores __one are reserved for the (rare) cases when you  
want to ensure unique names (or name clashes are expected).

-- 
Gabriel Genellina




More information about the Python-list mailing list