obj必须是类型的实例或子类型

时间:2019-06-06 11:11:42

标签: python python-3.x jupyter-notebook ipython

我尝试将Jupyter Notebook动态加载到模块中,并在https://github.com/axil/import-ipynb/blob/master/import_ipynb.py中找到了一个有效的代码示例。但是,由于此实现使用了一些不推荐使用的功能,并且我想将一些常用功能整合到一个包中,因此我想实现自己的版本。但是,当我尝试在执行之前将jupyter魔术代码转换为python代码时,会遇到这个奇怪的错误。

(Pdb) self
<IPython.core.inputsplitter.IPythonInputSplitter object at 0x102198c50>
(Pdb) IPythonInputSplitter
<class 'IPython.core.inputsplitter.IPythonInputSplitter'>
(Pdb) type(self)
<class 'IPython.core.inputsplitter.IPythonInputSplitter'>
(Pdb) IPythonInputSplitter is type(self)
False
(Pdb) super(IPythonInputSplitter, self)
*** TypeError: super(type, obj): obj must be an instance or subtype of type

以下是违规代码的上下文:

for cell in notebook.cells:
    if cell.cell_type == "code":
        code = self.shell.input_transformer_manager.transform_cell(cell.source)

从错误类型来看,我认为这不是ipython的特殊问题,但我不太了解

1 个答案:

答案 0 :(得分:0)

此问题与提供的代码无关

发生问题是因为在实例化和类型检查之间使用IPython.core.inputsplitter.IPythonInputSplitter重载了包含importlib.reload的模块。