如何以编程方式报告类的API?

时间:2009-07-04 02:59:38

标签: python api

我的目标是解析一个类并返回一个数据结构(对象,字典等),它描述了类中包含的方法和相关参数。类型和回报的奖励积分......

要求:必须是Python

例如,以下类:

class Foo:
    def bar(hello=None):
         return hello

    def baz(world=None):
         return baz

将被解析为返回

result = {class:"Foo", 
          methods: [{name: "bar", params:["hello"]}, 
                    {name: "baz", params:["world"]}]}

所以这只是我正在思考的一个例子......我对数据结构非常灵活。

有关如何实现这一目标的任何想法/示例?

1 个答案:

答案 0 :(得分:8)

您可能想要查看Python的inspect模块。它会让你大部分时间到达那里:

>>> class Foo:
...     def bar(hello=None):
...          return hello
...     def baz(world=None):
...          return baz
...
>>> import inspect
>>> members = inspect.getmembers(Foo)
>>> print members
[('__doc__', None), ('__module__', '__main__'), ('bar', <unbound method Foo.bar>
), ('baz', <unbound method Foo.baz>)]
>>> inspect.getargspec(members[2][1])
(['hello'], None, None, (None,))
>>> inspect.getargspec(members[3][1])
(['world'], None, None, (None,))

这不是您想要的语法,但在阅读文档时,该部分应该非常简单。