aar*_*ing 7

除了dir已经提到的内置,还有inspect一个非常好的getmembers方法的模块.结合pprint.pprint你有一个强大的组合

from pprint import pprint
from inspect import getmembers
import linecache

pprint(getmembers(linecache))
Run Code Online (Sandbox Code Playgroud)

一些样本输出:

 ('__file__', '/usr/lib/python2.6/linecache.pyc'),
 ('__name__', 'linecache'),
 ('__package__', None),
 ('cache', {}),
 ('checkcache', <function checkcache at 0xb77a7294>),
 ('clearcache', <function clearcache at 0xb77a7224>),
 ('getline', <function getline at 0xb77a71ec>),
 ('getlines', <function getlines at 0xb77a725c>),
 ('os', <module 'os' from '/usr/lib/python2.6/os.pyc'>),
 ('sys', <module 'sys' (built-in)>),
 ('updatecache', <function updatecache at 0xb77a72cc>)
Run Code Online (Sandbox Code Playgroud)

请注意,与dir您不同,您可以看到成员的实际值.您可以应用getmembers类似于您可以应用的过滤器的过滤器dir,它们可以更强大.例如,

def get_with_attribute(mod, attribute, public=True):
    items = getmembers(mod)
    if public:
       items = filter(lambda item: item[0].startswith('_'), items)
    return [attr for attr, value in items if hasattr(value, attribute]
Run Code Online (Sandbox Code Playgroud)