How to Get a Function Name as a String in Python
Using __name__ Attribute
Using __qualname__ is the preferred method as it applies uniformly. It works on built-in functions as well:
#!/usr/bin/python3 def my_func(): pass class A(): def getName(): pass print(my_func.__name__) print(A.getName.__name__) # Python 3.3+ print(A.getName.__qualname__)
my_func getName A.getName
If you're interested in class methods too, Python 3.3+ has __qualname__ in addition to __name__.
Using inspect Module
The inspect module provides several useful functions to help get information about live objects such as modules, classes, methods, functions, tracebacks, frame objects, and code objects.
See the following example:
#!/usr/bin/python3 # Import module import inspect def my_func(): func_name = inspect.currentframe().f_code.co_name print(func_name) pass class A(): def getName(): func_name = inspect.currentframe().f_code.co_name print(func_name) pass my_func() A.getName()
sys._getframe also works instead of inspect.currentframe although the latter avoids accessing a private function.