Jonathan Slenders wrote:
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??)

   def g(*p, *args, **kwargs):
     f(self, *args, **kwargs)

Michael

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] <mailto:[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] <mailto:[EMAIL PROTECTED]> or [EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>

    On Fri, Jun 27, 2008 at 11:02 AM, Michael Foord
    <[EMAIL PROTECTED] <mailto:[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]>
            <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:58 AM, Michael Foord
            <[EMAIL PROTECTED]
            <mailto:[EMAIL PROTECTED]>
            <mailto:[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]>>
                   <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]>>>

                   On Fri, Jun 27, 2008 at 10:46 AM, Michael Foord
                   <[EMAIL PROTECTED]
            <mailto:[EMAIL PROTECTED]>
            <mailto:[EMAIL PROTECTED]
            <mailto:[EMAIL PROTECTED]>>
                   <mailto:[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]>>>
                          <mailto:[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]>>>
                          <mailto:[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]>>
                   <mailto:[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]>>
                   <mailto:[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]>
            <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] <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

Reply via email to