繁体   English   中英

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

[英]How to access a function in interactive namespace in ipython?

在一个ipython脚本笔记本中,我想要类似以下内容:

from mod import run

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

run()

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

我应该如何定义run()以获得对交互式名称空间中定义的“已初始化”函数的引用?

这是一种可能的方法-

在模块内部:

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() 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM