[IronPython] Evaluating python from within the context of a class
Jonathan Slenders
jonathan at slenders.be
Fri Jun 27 19:06:12 CEST 2008
>>> class RT(object):
... def Evaluate(self, code):
... eval(code, {'test': self.test})
... def test(self):
... print 'RT test'
...
>>> RT().Evaluate('test()')
RT test
>>>
2008/6/27 Michael Foord <fuzzyman at voidspace.org.uk>:
> 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
>> falcon at uwyo.edu <mailto:falcon at uwyo.edu> or 89iroc at gmail.com <mailto:
>> 89iroc at gmail.com>
>>
>> On Fri, Jun 27, 2008 at 10:58 AM, Michael Foord <
>> fuzzyman at voidspace.org.uk <mailto:fuzzyman at voidspace.org.uk>> 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
>> falcon at uwyo.edu <mailto:falcon at uwyo.edu>
>> <mailto:falcon at uwyo.edu <mailto:falcon at uwyo.edu>> or
>> 89iroc at gmail.com <mailto:89iroc at gmail.com>
>> <mailto:89iroc at gmail.com <mailto:89iroc at gmail.com>>
>>
>> On Fri, Jun 27, 2008 at 10:46 AM, Michael Foord
>> <fuzzyman at voidspace.org.uk <mailto:fuzzyman at voidspace.org.uk>
>> <mailto:fuzzyman at voidspace.org.uk
>> <mailto:fuzzyman at voidspace.org.uk>>> 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
>> falcon at uwyo.edu <mailto:falcon at uwyo.edu>
>> <mailto:falcon at uwyo.edu <mailto:falcon at uwyo.edu>>
>> <mailto:falcon at uwyo.edu <mailto:falcon at uwyo.edu>
>> <mailto:falcon at uwyo.edu <mailto:falcon at uwyo.edu>>> or
>>
>> 89iroc at gmail.com <mailto:89iroc at gmail.com>
>> <mailto:89iroc at gmail.com <mailto:89iroc at gmail.com>>
>> <mailto:89iroc at gmail.com <mailto:89iroc at gmail.com>
>> <mailto:89iroc at gmail.com <mailto:89iroc at gmail.com>>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com
>> <mailto:Users at lists.ironpython.com>
>> <mailto:Users at lists.ironpython.com
>> <mailto:Users at lists.ironpython.com>>
>>
>>
>> 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
>> Users at lists.ironpython.com
>> <mailto:Users at lists.ironpython.com>
>> <mailto:Users at lists.ironpython.com
>> <mailto:Users at lists.ironpython.com>>
>>
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>> 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
>> Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com
>> 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
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20080627/9365c8bb/attachment.html>
More information about the Ironpython-users
mailing list