有没有Python函数或方法可以显示对象规格?

4 投票
3 回答
519 浏览
提问于 2025-04-17 23:53

有没有什么内置的方法可以在Python中获取规范注释,这样就不用回去看类定义里的注释了?具体来说,我想知道从一个导入的模块中创建的对象需要多少个参数,以及这些参数是什么类型。

我在Python的文档里找不到这个答案,如果这里已经有人回答过,我也没能在搜索中找到。

3 个回答

1

你可以试着安装 ipython 这个交互式命令行工具,然后使用 %pdoc%pdef 这两个命令:

%pdoc : 这个命令会打印出一个对象的文档说明(如果内容太长,它会通过分页器来显示)。如果你给的是一个类,它会同时打印出类和构造函数的文档说明。

%pdef : 这个命令会打印出任何可调用对象的定义信息。如果对象是一个类,它会打印出构造函数的信息。

3

你还可以使用 inspect 模块,特别是 inspect.getmembers() 这个功能:

inspect.getmembers(object[, predicate])

这个功能会返回一个对象的所有成员,以一个包含(名称,值)对的列表形式呈现,并按名称排序。

举个例子:

>>> import inspect
>>> class Test(object):
...     def __init__(self, smile):
...         print(smile)
... 
>>> inspect.getmembers(Test, predicate=inspect.ismethod)
[('__init__', <unbound method Test.__init__>)]
6
>>> from random import randint
>>> help(randint)


Help on method randint in module random:

randint(self, a, b) method of random.Random instance
    Return random integer in range [a, b], including both end points.
(END)

http://docs.python.org/2.7/library/functions.html#help

使用自定义类:

>>> class Test(object):
...     def __init__(self, smile):
...             print(smile)
...
>>> help(Test)

Help on class Test in module __main__:

class Test(__builtin__.object)
 |  Methods defined here:
 |  
 |  __init__(self, smile)
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)
(END)

撰写回答