# `pyclbr` — 파이썬 모듈 브라우저 지원

소스 코드: Lib/pyclbr.py

`pyclbr` 모듈은 파이썬 코드 모듈에 정의된 함수, 클래스 및 메서드에 대한 제한된 정보를 제공합니다. 이 정보는 모듈 브라우저를 구현하기에 충분합니다. 정보는 모듈을 임포트 하기보다는 파이썬 소스 코드에서 추출되므로 이 모듈은 신뢰할 수 없는 코드와 함께 사용하는 것이 안전합니다. 이 제한으로 인해 이 모듈을 모든 표준 및 선택 확장 모듈을 포함하여 파이썬으로 구현되지 않은 모듈에 사용할 수 없습니다.

`pyclbr.``readmodule`(module, path=None)

  모듈 수준의 클래스 이름을 클래스 설명자에 매핑하는 딕셔너리를 돌려줍니다. 가능하면, 임포트 된 베이스 클래스에 관한 설명자가 포함됩니다. 매개 변수 module은 읽을 모듈 이름이 들어있는 문자열입니다; 패키지 내의 모듈 이름일 수 있습니다. 주어지면, path는 `sys.path` 앞에 추가된 디렉터리 경로 시퀀스인데, 모듈 소스 코드의 위치를 찾는 데 사용됩니다.

  이 함수는 원래 인터페이스이며 이전 버전과의 호환성을 위해서만 유지됩니다. 다음 함수의 필터링 된 버전을 반환합니다.

`pyclbr.``readmodule_ex`(module, path=None)

  `def` 나 `class` 문을 사용하여 모듈에 정의된 각 함수 및 클래스에 대한 함수나 클래스 설명자를 포함하는 딕셔너리 기반 트리를 반환합니다. 반환된 딕셔너리는 모듈 수준의 함수와 클래스 이름을 해당 설명자에 대응합니다. 중첩된 객체는 그들의 parent의 children 딕셔너리에 들어갑니다. readmodule과 마찬가지로, module은 읽을 모듈의 이름을 지정하고 path는 sys.path의 앞에 추가됩니다. 읽히는 모듈이 패키지면, 반환된 딕셔너리는 키 `'__path__'`를 가지는데, 값은 패키지 검색 경로를 포함하는 리스트입니다.

버전 3.7에 추가: 중첩된 정의에 대한 설명자. 새로운 children 어트리뷰트를 통해 액세스할 수 있습니다. 각에는 새로운 parent 어트리뷰트가 있습니다.

이러한 함수에 의해 반환되는 설명자는 Function과 Class 클래스의 인스턴스입니다. 사용자가 이러한 클래스의 인스턴스를 만들 것으로 기대하지 않습니다.

## Function 객체

클래스 `Function` 인스턴스는 def 문으로 정의된 함수를 설명합니다. 다음과 같은 어트리뷰트를 가지고 있습니다 :

`Function.``file`

  함수가 정의된 파일의 이름.

`Function.``module`

  설명된 함수를 정의하는 모듈의 이름.

`Function.``name`

  함수의 이름.

`Function.``lineno`

  정의가 시작되는 파일의 줄 번호.

`Function.``parent`

  최상위 함수면, None. 중첩된 함수면, 부모.

  버전 3.7에 추가.

`Function.``children`

  이름을 중첩된 함수와 클래스에 관한 설명자로 매핑하는 딕셔너리.

  버전 3.7에 추가.

## Class 객체

클래스 `Class` 인스턴스는 class 문으로 정의된 클래스를 설명합니다. Function과 같은 어트리뷰트에 더해 두 개의 어트리뷰트가 더 있습니다.

`Class.``file`

  클래스가 정의된 파일의 이름.

`Class.``module`

  설명된 클래스를 정의하는 모듈의 이름.

`Class.``name`

  클래스의 이름.

`Class.``lineno`

  정의가 시작되는 파일의 줄 번호.

`Class.``parent`

  최상위 클래스면, None. 중첩된 클래스면, 부모.

  버전 3.7에 추가.

`Class.``children`

  이름을 중첩된 함수와 클래스에 관한 설명자로 매핑하는 딕셔너리.

  버전 3.7에 추가.

`Class.``super`

  설명되는 클래스의 직접적인 베이스 클래스를 설명하는 `Class` 객체의 리스트. 슈퍼 클래스로 명명되었지만 `readmodule_ex()`가 찾을 수 없는 클래스는 `Class` 객체가 아니라 클래스 이름을 담은 문자열로 나열됩니다.

`Class.``methods`

  메서드 이름을 줄 번호에 매핑하는 딕셔너리. 최신 children 딕셔너리에서 파생될 수 있지만, 이전 버전과의 호환성을 위해 남아있습니다.