The following works. But I've no idea how to pass params to the member
function. (Anyone: How can you call a function with parameters unpacked from
a tuple??)

But why do you actually want to do this? If the class instance is not
important, just make a static method of this one.

class RT(object):
        def Evaluate(self, code):
                def generateContext():
                        def dropself(f):
                                def g(*p):
                                        f(self)
                                return g
                        context = {}
                        for f in RT.__dict__:
                                context[f] = dropself(RT.__dict__[f])
                        return context

                eval(code, generateContext())

        def test(self):
                print 'RT test'

RT().Evaluate('test()')






2008/6/27 Michael Stephens <[EMAIL PROTECTED]>:

> Is there anyway cool way you know of to generate the context at runtime
> def Evaluate(_self_,code)
>  exec code in GenerateContext(a)
>
>
> Michael Stephens
>
> Electrical Engineering Graduate Student
> University of Wyoming
> [EMAIL PROTECTED] or [EMAIL PROTECTED]
>
> On Fri, Jun 27, 2008 at 11:02 AM, Michael Foord <[EMAIL PROTECTED]>
> wrote:
>
>> Michael Stephens wrote:
>>
>>> I guess I can rebind locals and functions into my own dictionary.. I was
>>> just hoping to avoid that with some snazzy python.
>>>
>>>  I think exec'ing in a custom context is *more* snazzy Python. :-p
>>
>> Michael
>>
>>  Michael Stephens
>>>
>>> Electrical Engineering Graduate Student
>>> University of Wyoming
>>> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> or [EMAIL PROTECTED] <mailto:
>>> [EMAIL PROTECTED]>
>>>
>>> On Fri, Jun 27, 2008 at 10:58 AM, Michael Foord <
>>> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:
>>>
>>>    Michael Stephens wrote:
>>>
>>>        Closer.. but self.__dict__ is empty and cannot find test.  We
>>>        are trying to wire up property expressions in our system.   So
>>>        control.Enable="GetEnabled()" rather than what we have now
>>>        which is control.Enable="currentform.GetEnabled()"
>>>
>>>        I thought I could eval the RHS inside the class to get what i
>>>        wanted but alas no dice.
>>>
>>>
>>>    Well, you could do it in RT.__dict__ - but you would have to make
>>>    test a staticmethod.
>>>
>>>    Why not maintain an explicit dictionary as a context?
>>>
>>>    Michael
>>>
>>>        Michael Stephens
>>>
>>>        Electrical Engineering Graduate Student
>>>        University of Wyoming
>>>        [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>>>        <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> or
>>>        [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>>>        <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
>>>
>>>        On Fri, Jun 27, 2008 at 10:46 AM, Michael Foord
>>>        <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>>>        <mailto:[EMAIL PROTECTED]
>>>        <mailto:[EMAIL PROTECTED]>>> wrote:
>>>
>>>           Michael Stephens wrote:
>>>
>>>               I want to be able to execute arbitrary expressions but have
>>>               their context be within my class.  The end result is
>>>        that RT
>>>               test should be printed and not global test
>>>
>>>               def test():
>>>                print "global test"
>>>
>>>               class RT:
>>>                def test(_self_):
>>>                print 'RT test'
>>>                def Evaluate(_self_,code):
>>>                eval(code)
>>>
>>>
>>>           exec code in self.__dict__
>>>
>>>           Might work.
>>>
>>>           Michael
>>>
>>>
>>>               test()
>>>               a.test()
>>>               a=RT()
>>>               a.Evaluate('test()')
>>>
>>>               Michael Stephens
>>>
>>>               Electrical Engineering Graduate Student
>>>               University of Wyoming
>>>               [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>>>        <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
>>>               <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>>>        <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> or
>>>
>>>               [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>>>        <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
>>>               <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>>>        <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>               _______________________________________________
>>>               Users mailing list
>>>               [email protected]
>>>        <mailto:[email protected]>
>>>        <mailto:[email protected]
>>>        <mailto:[email protected]>>
>>>
>>>
>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>>           --    http://www.ironpythoninaction.com/
>>>           http://www.voidspace.org.uk/
>>>           http://www.trypython.org/
>>>           http://www.ironpython.info/
>>>           http://www.theotherdelia.co.uk/
>>>           http://www.resolverhacks.net/
>>>
>>>           _______________________________________________
>>>           Users mailing list
>>>           [email protected]
>>>        <mailto:[email protected]>
>>>        <mailto:[email protected]
>>>        <mailto:[email protected]>>
>>>
>>>           http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>>
>>>  ------------------------------------------------------------------------
>>>
>>>        _______________________________________________
>>>        Users mailing list
>>>        [email protected] <mailto:[email protected]>
>>>        http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>>
>>>    --    http://www.ironpythoninaction.com/
>>>    http://www.voidspace.org.uk/
>>>    http://www.trypython.org/
>>>    http://www.ironpython.info/
>>>    http://www.theotherdelia.co.uk/
>>>    http://www.resolverhacks.net/
>>>
>>>    _______________________________________________
>>>    Users mailing list
>>>    [email protected] <mailto:[email protected]>
>>>    http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Users mailing list
>>> [email protected]
>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>
>>
>> --
>> http://www.ironpythoninaction.com/
>> http://www.voidspace.org.uk/
>> http://www.trypython.org/
>> http://www.ironpython.info/
>> http://www.theotherdelia.co.uk/
>> http://www.resolverhacks.net/
>>
>> _______________________________________________
>> Users mailing list
>> [email protected]
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
>
>
> _______________________________________________
> Users mailing list
> [email protected]
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to