Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 클래스의 메서드 목록을 확인하는 방법

파이썬에서 특정 클래스에 정의된 메서드 목록을 확인하고 싶다면, 표준 라이브러리의 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() 방식이 더 적합합니다.