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