如何在ipython中访问交互命名空间中的函数?

时间:2015-01-24 22:27:07

标签: python ipython ipython-notebook

在ipython脚本笔记本中我希望有类似的东西:

from mod import run

def initialize():
    print("In!")

run()

该脚本假设用户需要定义一个函数initialize,run()应测试它是否已定义并调用它。

我应该如何定义run()来获取对交互命名空间中定义的“初始化”函数的引用?

1 个答案:

答案 0 :(得分:0)

这是一种可能的方法 -

模块内部:

class MyHandler(object):  
    def __init__(self, *args): 
      """ Init stuff """
    def run(self, *args): 
        self.initializer(*args)
        """do running stuff"""
        pass
    def initializer(self): 
      raise Exception("Initializer must be defined") 
    def shutdown(self): 
        """default cleanup stuff"""
        pass

然后Ipython工作流程可能类似于:

from mod import MyHandler
new_handler = MyHandler() 
def add_method(obj, meth): 
    obj.__dict__[meth.__name__] = meth.__get__(obj, obj.__class__)
def intializer(self): 
    print("In!") 
add_method(new_handler, initializer) 
new_handler.run()