Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Finding what methods a Python object has

Given a Python object of any kind, is there an easy way to get the list of all methods that this object has?

Or,

if this is not possible, is there at least an easy way to check if it has a particular method other than simply checking if an error occurs when the method is called?

like image 424
Thomas Lötzer Avatar asked Aug 29 '08 15:08

Thomas Lötzer


People also ask

How do I see the methods of a Python object?

You can use the built in dir() function to get a list of all the attributes a module has. Try this at the command line to see how it works. Also, you can use the hasattr(module_name, "attr_name") function to find out if a module has a specific attribute.

How do you access the methods of an object?

To access the object, a method can use the this keyword. The value of this is the object “before dot”, the one used to call the method. Here during the execution of user. sayHi() , the value of this will be user .

How do I get list of methods in a Python class?

There is the dir(theobject) method to list all the fields and methods of your object (as a tuple) and the inspect module (as codeape write) to list the fields and methods with their doc (in """). Because everything (even fields) might be called in Python, I'm not sure there is a built-in function to list only methods.

How do you list the properties of an object in Python?

In order to list and display object attributes Python provides the dir() method which will return all attribute names as a list. The dir() method is a built-in method that is provided by default and there is no need to install or import an extra module.


2 Answers

For many objects, you can use this code, replacing 'object' with the object you're interested in:

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

I discovered it at diveintopython.net (now archived). Hopefully, that should provide some further detail!

If you get an AttributeError, you can use this instead:

getattr( is intolerant of pandas style python3.6 abstract virtual sub-classes. This code does the same as above and ignores exceptions.

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']) 
like image 182
ljs Avatar answered Oct 23 '22 19:10

ljs


You can use the built in dir() function to get a list of all the attributes a module has. Try this at the command line to see how it works.

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

Also, you can use the hasattr(module_name, "attr_name") function to find out if a module has a specific attribute.

See the Guide to Python introspection for more information.

like image 40
Bill the Lizard Avatar answered Oct 23 '22 20:10

Bill the Lizard