Python: получить исходный код класса (используя inspect)
Я использую ipython и хочу сохранить класс, определенный в одной из моих записных книжек. Я могу сделать это с помощью функций с помощью% save и inspect.getsource, но я не могу получить источник моего класса. Я быстро взглянул на проверяемые методы и не смог найти ничего, что могло бы помочь. Какие-либо предложения?
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
1 ответ
getsource
работает, фактически открывая исходный файл, который определяет объект, который вы смотрите.
Но, так как вы определили A
в интерактивном интерпретаторе такого исходного файла нет, и поэтому Python не может его найти.
Ошибка несколько неясна, но Python в основном пытается найти исходный файл для модуля A (A.__module__
), который __main__
и который не имеет __file__
свойство (потому что оно не пришло из файла).