Joel Davis wrote:
On Dec 29, 11:21 am, Emile van Sebille <em...@fenx.com> wrote:
<snip>
In an extremely controlled situation you may avoid headaches when
deploying this kind of technique. Regardless, we all want to make you
aware that this _will_ likely cause headaches, and, idle curiosity
aside, none of us can imagine the problem to which this is the
appropriate solution.
It's fun to work out, but you're probably better served if you describe
the problem you're solving and consider the alternatives suggested.
Dependence on introspection belongs in programming tools, not in
applications deployed across versions and platforms.
Emile
Emile, essentially, the situation is that I'm trying to create an API
for consumption scripting. As it stands now, in initial development
they can pass callback function. The idea was to enable them to pass
variables and have the handling function determine the type and just
drop the value into it instead of calling function with the value as
an argument. The problem with that approach is determining exactly
which variable was passed. My idea was to use this to capture the name
and then modify the globals for the executing frame so that the passed
variable represents the new value.
I've never heard of "consumption scripting." Can you describe it in
simple terms?
I take it you're publishing a library of code that somebody can call to
do things. Can you characterize your users? Are they programmers, are
they Python programmers, are they scientists?
Presumably you're trying to define a language (not Python) that these
users can program in, where you want to achieve call by reference. I'm
sure you have some good reason for that, but could we hear it?
When you need to do something like this for programmers, the approach
might be for them to pass a collection object, and an identifier to
specify what part of the collection for you to modify. If the
collection object is their module, then the identifier could be just the
name of the identifier they want you to modify. In this case, the code
could be robust and readable.
Even better would be for them to pass you an object, and you can call
methods on that object to modify it in place. Just provide them a class
to create such an instance, and they can have as many of them as they like.
DaveA
--
http://mail.python.org/mailman/listinfo/python-list