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?
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.
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 .
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.
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.
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'])
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With