2011-04-07 3 views
2

내가 그 안에 정의 된 몇 종류의 파일을 가지고과 같이 말 어떤 코드 행 B 클래스가 시작되고 끝나는가? 파일을 편집기에로드하고 텍스트 "Class A"를 표시하고 클래스 A의 정의 끝에 메서드를 소스에 삽입하려면 어떻게해야합니까? 나는 평범한 텍스트 파일로 소스를 읽는 것이 잘 될 것이라고 생각하지 않는다.얻기 시작/끝

정의 된 클래스, 구현하는 메소드, 가져 오기 및 검사없이 하위 클래스의 클래스 등을 찾는 방법이 있습니까?

최종 줄 : 예를 들어 클래스에 메서드를 추가하고 기존 메서드에 데코레이터를 추가하고 기존 클래스에서 모든 메서드를 추출하고 새 메서드를 만들 때 소스를 조작 할 수 있도록 시작하고 끝내는 위치를 알아야합니다. 같은 방법으로.

목표는 파이썬 IDE/편집기에서 intellisense를 만드는 것입니다.

답변

2

내가 출발점으로 표준 라이브러리 파이썬 클래스 브라우저 (pyclbr)를 사용하는 것이 좋습니다.

+0

나는이 방법이 효과가있다.하지만 원본을 텍스트로만 사용할 수 있고 가져올 수있는 pythonpath의 파일로 사용할 수 없다면 어떻게 될까? 아무튼 파이썬을 가져 와서 속일 수 있습니까? 어떻게 든 sys.modules을 조작합니까? – Weholt

+0

관련 파일이 들어있는 디렉토리를 임시로'sys.path [0]'로 삽입하면 모듈 코드를 변경하지 않고도 pyclbr을 찾을 수 있습니다. 또 다른 방법은'pyclbr'을 정적 분석기를 작성하는 데 영감으로 사용하는 것입니다. 'pyclbr '이 필요한 모든 작업을 수행한다면 이전 옵션이 더 좋을 수도 있지만, 토큰 스트림으로 더 많은 일을하고 싶다면 어쨌든 커스텀 분석기가 필요할 것이다. – ncoghlan

0

원시 라인이 아닌 추상 구문 트리를 구문 분석한다고 생각해보십시오. 심지어 괄호에 기반한 구문이 아닌 파이썬이라 할지라도, 세미콜론을 사용하여 한 줄에 여러 개의 문장을 배열하거나 백 슬래시를 사용하여 문장을 두 줄에 분산시킬 수 있습니다.

가이 작업을 수행하는 방법에는 여러 가지 있지만, 참조 내장 패키지 ast