Running external module and accessing the created objects

Dave Angel davea at davea.name
Mon Mar 11 20:48:43 EDT 2013


On 03/11/2013 07:57 PM, Kene Meniru wrote:
> Here's the answer to this question.
>
> The summary of the question: how to run a module (called myapp.py) from
> another module (called myappwin.py) and be able to access the namespace of
> myapp.py from myappwin.py.
>
> ------------------------------------------
> # contents of myapp.py
> import math
>
> class MyApp(object):
>      def __init__(self):
>          super(MyApp, self).__init__()
>          self.name = "MyAppName"
>
>
> def testFunction():
>      boke = "Smilling"
>      print math.sin(1), boke
> -----------------------------------------
> # contents of myappwin
> def test():
>      dic = {}
>      execfile("myapp.py", dic)
>      testObj = dic["MyApp"]() # access MyApp class
>      dic["testFunction"]()    # execute testFunction
>      print testObj.name       # print string
>
>
> test()
> -----------------------------------------
> # OUTPUT
> $ python myappwin.py
> 0.841470984808 Smilling
> MyAppName
>

I hope you're just kidding.  execfile() and exec() are two of the most 
dangerous mechanisms around.  import or __import__() would be much 
better, as long as your user hasn't already run myapp.py as his script.


-- 
DaveA



More information about the Python-list mailing list