O
Olivier Scalbert
Hi all !
I have a problem that is not easy to explained, so I have tried to
reduce it a lot.
We are using a framework, that we can not modify.
in framework.py:
def do(something):
'''
Here we are in a framework that can not be modified ...
It does a lot of things
and finally:
'''
something()
in test.py:
from framework import *
def step1():
print "Do step1"
def step2():
print "Do step2"
# We ask the framework to do some work.
do(step1)
do(step2)
do(step3)
We are writing step1, step2, ... and asking the framework to process them.
Everything is ok, until we want to add a parameter to some steps.
We want to be able to do that:
in test.py:
from framework import *
def step1(param):
print "Do step1 with param"
def step2():
print "Do step2"
# We ask the framework to do some work.
do(step1, param = None)
do(step1, param = [0, 1, 5]) # again
do(step2)
Of course it does not work ...
TypeError: do() takes exactly 1 argument (2 given)
And we can not modify the framework (in which "do" is defined.
One solution would be to use a global variable that can be set before
each step. But it is not very elegant ...
One other approach would be to add dynamically an attribute the the
step1 function, and retrieve it inside the function, but it is perhaps
overkill.
Do you have some ideas ?
Thanks,
Olivier
I have a problem that is not easy to explained, so I have tried to
reduce it a lot.
We are using a framework, that we can not modify.
in framework.py:
def do(something):
'''
Here we are in a framework that can not be modified ...
It does a lot of things
and finally:
'''
something()
in test.py:
from framework import *
def step1():
print "Do step1"
def step2():
print "Do step2"
# We ask the framework to do some work.
do(step1)
do(step2)
do(step3)
We are writing step1, step2, ... and asking the framework to process them.
Everything is ok, until we want to add a parameter to some steps.
We want to be able to do that:
in test.py:
from framework import *
def step1(param):
print "Do step1 with param"
def step2():
print "Do step2"
# We ask the framework to do some work.
do(step1, param = None)
do(step1, param = [0, 1, 5]) # again
do(step2)
Of course it does not work ...
TypeError: do() takes exactly 1 argument (2 given)
And we can not modify the framework (in which "do" is defined.
One solution would be to use a global variable that can be set before
each step. But it is not very elegant ...
One other approach would be to add dynamically an attribute the the
step1 function, and retrieve it inside the function, but it is perhaps
overkill.
Do you have some ideas ?
Thanks,
Olivier