On Aug 18, 8:18 pm, Steve Holden <st...@holdenweb.comwrote:
Quote:
beginner wrote:
>
Quote:
I have encountered a small problems. How to call module functions
inside class instance functions? For example, calling func1 in func2
resulted in a compiling error.
>
>
Quote:
def func1():
print "hello"
>
Quote:
class MyClass:
def func2():
#how can I call func1 here.
func1() #results in an error
>
If you had bothered to include the error message it would have been
obvious that the problem with your code isn't in body of the method at
all - you have failed to include an argument to the method to pick up
the instance on which the method is called. I am guessing that when you
create an instance and call its func2 method you see the message
>
Traceback (most recent call last):
File "test07.py", line 12, in <module>
myInstance.func2()
TypeError: func2() takes no arguments (1 given)
>
which would have been a very useful clue. Please include the traceback
in future! Here's a version of your program that works.
>
sholden@bigboy ~/Projects/Python
$ cat test07.py
"my module here"
>
def func1():
print "hello"
>
class MyClass:
def func2(self):
#how can I call func1 here.
func1() #results in an error
>
myInstance = MyClass()
myInstance.func2()
>
sholden@bigboy ~/Projects/Python
$ python test07.py
hello
>
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd
http://www.holdenweb.com
Skype: holdenweb
http://del.icio.us/steve.holden
--------------- Asciimercial ------------------
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
----------- Thank You for Reading -------------- Hide quoted text -
>
- Show quoted text -
I apologize for not posting the exact code and error message. The
missing "self" is due to a typo of mine. It is not really the problem
I am encountering.
testmodule.py
-----------------
"""Test Module"""
def __module_level_func():
print "Hello"
class TestClass:
def class_level_func(self):
__module_level_func()
main.py
------------------
import testmodule
x=testmodule.TestClass()
x.class_level_func()
The error message I am encountering is: NameError: global name
'_TestClass__module_level_func' is not defined
I think it has something to do with the two underscores for
__module_level_func. Maybe it has something to do with the python
implementation of the private class level functions.
By the way, the reason I am naming it __module_level_func() is because
I'd like __module_level_func() to be private to the module, like the C
static function. If the interpreter cannot really enforce it, at least
it is some sort of naming convention for me.
Thanks,
Geoffrey