Python-如何检查API的模块

时间:2019-09-10 03:55:36

标签: python api module

我有API Arcgis 然后导入arcgis.gis

我想找到该模块在工具方面的内容 所以例如我知道它有 .tags,但是我怎么知道它是否具有.feature_layers(因为显然不存在)。如此简单地在API中如何知道我可以使用什么?

1 个答案:

答案 0 :(得分:0)

理想情况下,您会阅读该文档,但是如果没有可用的文档,在查看源代码之前,您可以执行以下操作

>>> import mymodule
>>> help(mymodule)
>>> dir(mymodule)
>>> mymodule.__dict__

... inspect类可以做更多的检查...(签出这个脚本,我没有写过,但是也不记得我从哪里得到的)

import inspect
import mymodule

def get_function_markdown(function):
    return inspect.getdoc(function)


def parse_class(_class):
    for name, data in inspect.getmembers(_class):
        print '%s :' % name, repr(data)


def parse_module(module):
    """See what you can get in  module."""
    for name, data in inspect.getmembers(module):
        if name == '__builtins__':
            continue
        if inspect.ismodule(data):
            print "ismodule"
            print '%s :' % name, repr(data)
        elif inspect.isclass(data):
            print "isclass"
            print '%s :' % name, repr(data)
            parse_class(data)
        elif inspect.ismethod(data):
            print "ismethod"
            print '%s :' % name, repr(data)
        elif inspect.isfunction(data):
            print "isfunction"
            print get_function_markdown(data)
            print '%s :' % name, repr(data)
        elif inspect.isgeneratorfunction(data):
            print "isgeneratorfunction"
            print '%s :' % name, repr(data)
        elif inspect.isgenerator(data):
            print "isgenerator"
            print '%s :' % name, repr(data)
        elif inspect.istraceback(data):
            print "istraceback"
            print '%s :' % name, repr(data)
        elif inspect.isframe(data):
            print "isframe"
            print '%s :' % name, repr(data)
        elif inspect.iscode(data):
            print "iscode"
            print '%s :' % name, repr(data)
        elif inspect.isbuiltin(data):
            print "isbuiltin"
            print '%s :' % name, repr(data)
        elif inspect.isroutine(data):
            print "isroutine"
            print '%s :' % name, repr(data)
        elif inspect.isabstract(data):
            print "isabstract"
            print '%s :' % name, repr(data)
        elif inspect.ismethoddescriptor(data):
            print "ismethoddescriptor"
            print '%s :' % name, repr(data)
        elif inspect.isdatadescriptor(data):
            print "isdatadescriptor"
            print '%s :' % name, repr(data)
        elif inspect.isgetsetdescriptor(data):
            print "isgetsetdescriptor"
            print '%s :' % name, repr(data)
        elif inspect.ismemberdescriptor(data):
            print "ismemberdescriptor"
            print '%s :' % name, repr(data)
        else:
            print "Unknown"
            print '%s :' % name, repr(data)


def main():
    """Testing."""
    parse_module(mymodule)

if __name__ == '__main__':
    main()