dir(re.compile(pattern))
不返回pattern作为列表的元素之一。即它返回:
['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner', 'search', 'split', 'sub', 'subn']
根据手册,它应该包含
对象的属性名称,其类的属性名称,以及递归其类的基类的属性。
它也说
该列表不一定完整。
有没有办法获得 完整的 清单?我一直以为dir返回一个完整的列表,但显然并没有…
另外:有没有办法只列出属性?还是只有方法?
编辑:这实际上是python中的错误- >据称它已在3.0分支中修复(也许在2.6中已修复)
对于属性的 完整 列表,简短的答案是:否。问题在于属性实际上定义为getattr内置函数接受的参数。由于用户可以重新实现__getattr__,突然允许任何类型的属性,因此没有可能的通用方法来生成该列表。该dir函数返回__dict__属性中的键,即,如果__getattr__未重新实现该方法,则所有可访问的属性。
getattr
__getattr__
dir
__dict__
对于第二个问题,这没有任何意义。实际上,方法是可调用的属性,仅此而已。但是,您可以过滤可调用的属性,并使用该inspect模块确定类的方法,方法或函数。
inspect