如何获取对象的方法和属性的完整列表?

问题:

dir(re.compile(pattern)) 

不返回模式作为列表的元素之一。即它返回:

['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner', 'search', 'split', 'sub', 'subn']

根据手册,它应该包含

对象的属性名称,其类的属性的名称,以及递归的类的基类的属性。

它也说

列表不一定完整。

有没有办法获得完成列表?我总是认为dir返回一个完整的列表,但显然它不…
还有:有一种只列出属性的方法吗?还是只有方法?
 Edit: this is actually a bug in python -> supposedly it is fixed in the 3.0 branch (and perhaps also in 2.6)

回答:

对于完成属性列表,简短的答案是:否。问题是这些属性实际上被定义为getattr内置函数接受的参数。当用户可以重新实现__getattr__时,突然允许任何种类的属性,没有可能的通用方法来生成该列表。 dir函数返回__dict__属性中的键,即如果__getattr__方法未被重新实现,则所有属性都可以访问。
对于第二个问题,这并不真实。实际上,方法是可调用属性,没有更多。您可以通过过滤可调用属性,并使用inspect模块确定类方法,方法或函数。

 
 Code问答: codewenda.com
Stackoverflow:How to get a complete list of object’s methods and attributes?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

77 + = 84