Ale*_*far 5 python class ipython linecache
我正在使用ipython,我想保存一个在笔记本中定义的类。我可以使用%save和inspect.getsource函数很好地做到这一点,但是我似乎无法获取类的源代码。我快速浏览了一下inspect中的方法,似乎找不到任何可以帮助的方法。有什么建议么?
class A():
def __init__(self):
self.x = 1
%save filename.py inspect.getsource(A)
inspect.getsource(A)
>>> ...
>>> TypeError: <module '__main__'> is a built-in class
Run Code Online (Sandbox Code Playgroud)
getsource通过实际打开定义您正在查看的对象的源文件来工作。
但是,由于您A在交互式解释器中进行了定义,因此不存在这样的源文件,因此 Python 无法找到该源文件。
这个错误有点晦涩难懂,但Python基本上尝试查找A的模块( A.__module__)的源文件,它是__main__,并且它没有__file__属性(因为它不是来自文件)。