2012-10-21 4 views
0

파이썬 파일에 저장된 클래스 또는 함수 내에서 코드 줄 수를 찾으려고합니다. 내 코드는 다음과 같습니다. ... 원하는 클래스의 코드 줄 수를 찾는 것입니다. 모든 파일 ... 그렇게 할 수있는 좋은 방법이 있습니까 ?? inspect.getsourcelines 워드 프로세서에서파이썬에서 클래스 내의 코드 줄?

import inspect 
import foo  
for a,b in inspect.getmembers(foo): 
    if inspect.isclass(b): 
     print a # find a class within the file 
+0

메신저 파일을 열고 내부를 볼 수 없다고 가정합니다. –

답변

3
len(inspect.getsourcelines(a)[0]) 

: 당신은 0 인덱스를 필요 왜

Return a list of source lines and starting line number for an object.

+0

답장을 보내 주셔서 감사합니다 ...하지만 코드를 실행하려고했는데 오류가 발생했습니다 ... TypeError : 'Foo'가 모듈, 클래스, 메서드, 함수, 역 추적, 프레임 또는 코드 객체가 아닙니다 ... 그리고 'Foo'는 foo.py에있는 클래스의 이름입니다. – tkyass

+0

현재 작동 중입니다 ... 구문 오류가 있습니다 .. 도움을 주셔서 감사합니다. – tkyass

+0

이 접근 방식의 문제점은 코드 줄과 설명 줄 수를 계산하는 것입니다. 거기에 코멘트와 의사 문자열없이 코드 라인을 셀 수있는 방법은 무엇입니까 ?? – tkyass

3

당신은 여전히 ​​inspect를 사용할 수

In [6]: from test import A 

In [7]: import inspect 

In [8]: inspect.getsourcelines(A) 
Out[8]: 
(['class A(object):\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n'], 
1) 

len(inspect.getsourcelines(A)[0])이 원하는 것을 반환합니다.

+0

답장을 보내 주셔서 감사합니다. 작동합니다. – tkyass

+0

@ user1762447 먼저'inspect' 문서를 통해 코드를보다 효율적으로 완성 할 수 있습니다. – iMom0

+0

나는 여러 번 inspect 문서를 읽으려고했지만 많은 것들이 나에게 불분명하다. 나는 파이썬에 익숙하지 않아 이것이 파이썬 문서에 익숙하지 않은 것 같다. 나는 하나의 질문이 더있다. 당신이 제출 한 코드를 수정하려고 시도했는데, 코멘트없이 코드의 덩어리 길이를 계산했지만, 그렇게하지는 않았다. inspect.getdocs와 inspect.getcomment를 사용하고 그들을 뺄 수 있을까요? – tkyass