Начало / конец класса Python из источника - PullRequest
2 голосов
/ 07 апреля 2011

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

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

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

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

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

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

Цель - создать intellisense в среде разработки / редакторе python.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

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

0 голосов
/ 07 апреля 2011

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

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

...