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

发布于 2021-01-29 14:58:00

dir(re.compile(pattern))

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

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

根据手册,它应该包含

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

它也说

该列表不一定完整。

有没有办法获得 完整的 清单?我一直以为dir返回一个完整的列表,但显然并没有…

另外:有没有办法只列出属性?还是只有方法?

编辑:这实际上是python中的错误- >据称它已在3.0分支中修复(也许在2.6中已修复)

关注者
0
被浏览
85
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    对于属性的 完整
    列表,简短的答案是:否。问题在于属性实际上定义为getattr内置函数接受的参数。由于用户可以重新实现__getattr__,突然允许任何类型的属性,因此没有可能的通用方法来生成该列表。该dir函数返回__dict__属性中的键,即,如果__getattr__未重新实现该方法,则所有可访问的属性。

    对于第二个问题,这没有任何意义。实际上,方法是可调用的属性,仅此而已。但是,您可以过滤可调用的属性,并使用该inspect模块确定类的方法,方法或函数。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看