Получение начального / конечного класса питона от источника

Обновить

December 2018

Просмотры

576 раз

2

Скажем, у меня есть файл с несколькими классами, определенными в нем, например, так:

class A:
    def somemethod(self): pass
    ...more methods...

class B:
    def othermethod(self): pass
    ....even more methods...

Как я могу узнать, какие строки в источнике класса А начинается и заканчивается, какая линия старта B код класса и заканчивается? Если загрузить файл в редакторе, отмечает текст «класс А» и вставить метод в источник в конце определения класса А, как я могу это сделать? Я не думаю, что чтение источника, как обычный текстовый файл будет работать очень хорошо.

Существуют ли способы, чтобы выяснить, какие классы определены, методы, которые они реализуют, какие классы они подкласс и т.д. без импорта и проверок?

Суть: Мне нужно узнать, где вещи начала и конца, чтобы быть в состоянии управлять исходным кодом, например, добавить методы классов, добавить декораторов к существующим методам, извлекать все методы из существующего класса и создание нового с теми же методами и т.п.

Цель заключается в создании IntelliSense в Python IDE / редактор.

2 ответы

2

Я предлагаю использовать стандартный класс библиотеки Python браузер ( pyclbr) в качестве отправной точки.

0

Подумайте, с точкой зрения разбора абстрактного синтаксического дерева, а не с точки зрения сырья линий. Даже Python, с его line-, а не синтаксисом кронштейнами на основе, могут организовать несколько операторов на одной линии с точкой с запятой, или распространило заявление по двум линиям с обратной косой черты.

Есть много способов сделать это, но увидеть встроенный пакет AST

Связанные вопросы