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__ свойство (потому что оно не пришло из файла).

Другие вопросы по тегам