24

我正在使用 Python 2.x,并且我有一个从以太中召唤的物体;关于它的文档不是特别清楚。我希望能够获得该对象的属性列表以及每个属性的类型。

同样,我还想获取该对象的方法列表,以及我可以找到的有关该方法的任何其他信息,例如参数的数量及其各自的类型。

我有一种感觉,我只是在我的谷歌搜索中错过了正确的行话。并不是说我想破坏细节,但它是 Active Directory,所以这总是很有趣。

4

5 回答 5

25

好吧...您的第一站将是一个简单的目录(对象)。这将显示所有对象的成员,包括字段和方法。在交互式 Python shell 中试一试,并试一试。

例如:

> class Foo:
   def __init__(self):
    self.a = "bar"
    self.b = 4711

> a=Foo()
> dir(a)
['__doc__', '__init__', '__module__', 'a', 'b']
于 2009-02-13T15:27:23.360 回答
9

怎么样:

>>> o=object()
>>> [(a,type(o.__getattribute__(a))) for a in dir(o)]
[('__class__', <type 'type'>), ('__delattr__', <type 'method-wrapper'>), 
('__doc__', <type 'str'>), ('__format__', <type 'builtin_function_or_method'>),
('__getattribute__', <type 'method-wrapper'>), ('__hash__', <type 'method-wrapper'>),
('__init__', <type 'method-wrapper'>), 
('__new__', <type 'builtin_function_or_method'>),
('__reduce__', <type 'builtin_function_or_method'>),
('__reduce_ex__', <type 'builtin_function_or_method'>),
('__repr__', <type 'method-wrapper'>), ('__setattr__', <type 'method-wrapper'>),
('__sizeof__', <type 'builtin_function_or_method'>),
('__str__', <type 'method-wrapper'>),
('__subclasshook__', <type 'builtin_function_or_method'>)]
>>> 

更结构化的方法是使用检查模块

inspect 模块提供了几个有用的函数来帮助获取有关活动对象的信息,例如模块、类、方法、函数、回溯、框架对象和代码对象。例如,它可以帮助您检查类的内容、检索方法的源代码、提取和格式化函数的参数列表,或者获取显示详细回溯所需的所有信息。

于 2009-02-13T15:31:19.793 回答
5

Python 自省指南”是一篇很好的文章,可以帮助您入门。

于 2009-02-13T15:33:17.340 回答
4

你可以看看检查模块。它提供了多种工具来检查活动对象以及源代码。

于 2009-02-13T15:40:04.390 回答
0

如果您使用的是 win32com.client.Dispatch,检查 Python 对象可能没有多大帮助,因为它是 IDispatch 的通用包装器。

您可以使用makepy (Activestate Python附带)从类型库生成 Python 包装器。然后您可以查看包装器的代码。

于 2009-02-13T16:04:23.630 回答