프로그래밍 언어/Python

파이썬 객체에 어떤 메서드가 있는지 찾기

Rateye 2021. 11. 29. 00:25
728x90
반응형
질문 : 파이썬 객체에 어떤 메서드가 있는지 찾기

모든 종류의 Python 객체가 주어지면이 객체가 가진 모든 메서드 목록을 쉽게 얻을 수있는 방법이 있습니까?

또는,

이것이 가능하지 않다면, 메서드가 호출 될 때 단순히 오류가 발생하는지 확인하는 것 외에 특정 메서드가 있는지 확인하는 쉬운 방법이 있습니까?

답변

많은 객체 에 대해이 코드를 사용하여 'object'를 관심있는 객체로 바꿀 수 있습니다.

object_methods = [method_name for method_name in dir(object)
                  if callable(getattr(object, method_name))]
                  

diveintopython.net 에서 발견했습니다 (현재 보관 됨). 더 자세한 정보가 제공되기를 바랍니다.

AttributeError 받으면 대신 이것을 사용할 수 있습니다 .

getattr( 은 pandas 스타일 python3.6 추상 가상 하위 클래스를 용납하지 않습니다.이 코드는 위와 동일하며 예외를 무시합니다.

import pandas as pd
df = pd.DataFrame([[10, 20, 30], [100, 200, 300]],
                  columns=['foo', 'bar', 'baz'])
def get_methods(object, spacing=20):
  methodList = []
  for method_name in dir(object):
    try:
        if callable(getattr(object, method_name)):
            methodList.append(str(method_name))
    except:
        methodList.append(str(method_name))
  processFunc = (lambda s: ' '.join(s.split())) or (lambda s: s)
  for method in methodList:
    try:
        print(str(method.ljust(spacing)) + ' ' +
              processFunc(str(getattr(object, method).__doc__)[0:90]))
    except:
        print(method.ljust(spacing) + ' ' + ' getattr() failed')

get_methods(df['foo'])
출처 : https://stackoverflow.com/questions/34439/finding-what-methods-a-python-object-has
728x90
반응형