我正在使用 Python 2.x,并且我有一个从以太中召唤的物体;关于它的文档不是特别清楚。我希望能够获得该对象的属性列表以及每个属性的类型。
同样,我还想获取该对象的方法列表,以及我可以找到的有关该方法的任何其他信息,例如参数的数量及其各自的类型。
我有一种感觉,我只是在我的谷歌搜索中错过了正确的行话。并不是说我想破坏细节,但它是 Active Directory,所以这总是很有趣。
我正在使用 Python 2.x,并且我有一个从以太中召唤的物体;关于它的文档不是特别清楚。我希望能够获得该对象的属性列表以及每个属性的类型。
同样,我还想获取该对象的方法列表,以及我可以找到的有关该方法的任何其他信息,例如参数的数量及其各自的类型。
我有一种感觉,我只是在我的谷歌搜索中错过了正确的行话。并不是说我想破坏细节,但它是 Active Directory,所以这总是很有趣。
好吧...您的第一站将是一个简单的目录(对象)。这将显示所有对象的成员,包括字段和方法。在交互式 Python shell 中试一试,并试一试。
例如:
> class Foo:
def __init__(self):
self.a = "bar"
self.b = 4711
> a=Foo()
> dir(a)
['__doc__', '__init__', '__module__', 'a', 'b']
怎么样:
>>> 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 模块提供了几个有用的函数来帮助获取有关活动对象的信息,例如模块、类、方法、函数、回溯、框架对象和代码对象。例如,它可以帮助您检查类的内容、检索方法的源代码、提取和格式化函数的参数列表,或者获取显示详细回溯所需的所有信息。
“ Python 自省指南”是一篇很好的文章,可以帮助您入门。
你可以看看检查模块。它提供了多种工具来检查活动对象以及源代码。
如果您使用的是 win32com.client.Dispatch,检查 Python 对象可能没有多大帮助,因为它是 IDispatch 的通用包装器。
您可以使用makepy (Activestate Python附带)从类型库生成 Python 包装器。然后您可以查看包装器的代码。