Encontrar qué métodos tiene un objeto Python

Resuelto Thomas Lötzer asked hace 16 años • 22 respuestas

Dado un objeto Python de cualquier tipo, ¿existe una manera fácil de obtener la lista de todos los métodos que tiene este objeto?

O si esto no es posible, ¿existe al menos una manera fácil de verificar si tiene un método en particular, además de verificar si ocurre un error cuando se llama al método?

Thomas Lötzer avatar Aug 29 '08 22:08 Thomas Lötzer
Aceptado

Para muchos objetos , puedes usar este código, reemplazando 'objeto' con el objeto que te interesa:

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

Lo descubrí en diveintopython.net (ahora archivado), ¡eso debería proporcionar más detalles!

Si obtienes un AttributeError, puedes usar esto en su lugar :

getattr()No tolera las subclases virtuales abstractas de Python 3.6 estilo pandas. Este código hace lo mismo que el anterior e ignora las excepciones.

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 Exception:
        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 Exception:
        print(method.ljust(spacing) + ' ' + ' getattr() failed')

get_methods(df['foo'])
ljs avatar Aug 29 '2008 15:08 ljs

Puede utilizar la función integrada dir()para obtener una lista de todos los atributos que tiene un módulo. Pruebe esto en la línea de comando para ver cómo funciona.

>>> import moduleName
>>> dir(moduleName)

Además, puede utilizar la hasattr(module_name, "attr_name")función para saber si un módulo tiene un atributo específico.

Consulte la introspección de Python para obtener más información.

Bill the Lizard avatar Aug 29 '2008 15:08 Bill the Lizard

El método más sencillo es utilizar dir(objectname). Mostrará todos los métodos disponibles para ese objeto.

Pawan Kumar avatar Nov 20 '2013 16:11 Pawan Kumar