arotem wrote: > Hi, > > I am trying to call an unbound method (PrintInput) with the object > instance as the first argument but getting the following error: > "TypeError: unbound method PrintInput() must be called with test > instance as first argument (got test instance instead)" > > Below is the sample code (test) for this purpose (two files). > > Any help is greatly appreciated. > > Thanks in Advance, Anat > > > Sample Code: > > File 1 - input_file.py: > > #!/usr/bin/env python > from test import * > > CMD = (test.PrintInput, float(2)) > > File 2 - test.py: > > from input_file import * > > class test: > def __init__(self): > _test = 2 > def PrintInput(self, input): > print "Input is = %s"%(input) > > if __name__== "__main__": > print "Unit testing" > inst = test() > print CMD > cmd = CMD[0] > param = CMD[1:] > > cmd(inst,param) # this is the problematic line
It is best to avoid situations where you import the main script into modules used by your program. You end up with to copies of (in your example) test.py. and therefore two functionally identical but distinct test classes and that gets you the error message. You can verify that with the following demo: #file script_is_main.py import script_is_main import __main__ print script_is_main is __main__ # False A sound layout would instead be to move the test class into a separate module that is used by both the main script and the test module: # file test.py class Test: def __init__(self): _test = 2 def PrintInput(self, input): print "Input is = %s"%(input) # file input_file.py import test CMD = (test.Test.PrintInput, float(2)) # file main.py #!/usr/bin/env python import input_file import test if __name__== "__main__": print "Unit testing" inst = test.Test() CMD = input_file.CMD print CMD cmd = CMD[0] param = CMD[1:] cmd(inst, param) # this was the problematic line Peter -- http://mail.python.org/mailman/listinfo/python-list