Encontrar qué métodos tiene un objeto Python
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?
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'])
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.
El método más sencillo es utilizar dir(objectname)
. Mostrará todos los métodos disponibles para ese objeto.