Search code examples
pythonpython-3.xdynamicprintingdocstring

Python 3.6.1: How to dynamically print a docstring?


While reading some Python training books, I was tinkering a little bit with objects, like printing docstrings for common objects and attributes.

Consider the list of strings returned by:

dir(str)

I am trying to iterate over the above in order to dynamically print the docstrings of the attributes stored in the dir list with the following loop:

for item in dir(str):
    print(item.__doc__)

This returns the dir output for the str object and not for its attribute though, which is not what I'm looking for. How can I dynamically print instead the docstring for all the attributes that populate the list produced by the dir method?

EDIT: this is NOT a duplicate of this other question. Using the word "enumerate" is very misleading, at least to me, so I would say that question is improperly titled in fact I spent a lot of time looking for a solution and no search query ever returned that.


Solution

  • You can use getattr(obj, attr) to get the named attribute from the object.

    for item in dir(str):
        print(getattr(str, item).__doc__)