파이썬에서 특정 클래스에 정의된 메서드 목록을 확인하고 싶다면, 표준 라이브러리의 inspect 모듈을 활용하는 것이 가장 간편한 방법입니다. inspect.getmembers() 함수에 inspect.ismethod를 조건(predicate)으로 전달하면 해당 클래스의 메서드만 골라내어 리스트 형태로 얻을 수 있습니다.
예제 코드
아래 예제는 foo 클래스에 정의된 모든 메서드를 출력합니다.
import inspect
class foo:
def __init__(self):
self.x = x
def bar(self):
pass
def baz(self):
pass
print(type(foo))
print(inspect.getmembers(foo, predicate=inspect.ismethod))실행 결과
<class '__main__.foo'>
[('__init__', <function foo.__init__ at 0x...>), ('bar', <function foo.bar at 0x...>), ('baz', <function foo.baz at 0x...>)]코드 설명
inspect.getmembers(객체, 조건)은 객체가 가진 멤버들을 (이름, 값) 형태의 튜플 리스트로 반환합니다. 이때 두 번째 인자로 predicate=inspect.ismethod를 지정하면 일반 속성이나 변수는 제외되고 오직 메서드만 필터링됩니다.
위 결과에서 볼 수 있듯이 생성자인 __init__까지 포함하여 클래스에 정의된 세 개의 메서드(__init__, bar, baz)가 모두 출력됩니다.
참고: dir() 함수 활용하기
메서드 이름만 간단히 확인하고 싶다면 내장 함수 dir()을 사용할 수도 있습니다.
print([name for name, _ in inspect.getmembers(foo, predicate=inspect.ismethod)]) # 결과: ['__init__', 'bar', 'baz']
단, dir()은 상속받은 메서드와 특수 메서드까지 모두 포함하기 때문에, 해당 클래스 자체에 정의된 메서드만 정확히 알고 싶다면 inspect.getmembers() 방식이 더 적합합니다.