当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dir用法及代码示例


用法:

dir([object])

不带参数,返回当前本地范围内的名称列表。使用参数,尝试返回该对象的有效属性列表。

如果对象有一个名为 __dir__() 的方法,则将调用此方法并且必须返回属性列表。这允许实现自定义__getattr__()__getattribute__() 函数的对象自定义dir() 报告其属性的方式。

如果对象不提供 __dir__() ,则函数会尽力从对象的 __dict__ 属性(如果已定义)及其类型对象中收集信息。结果列表不一定完整,并且当对象具有自定义 __getattr__() 时可能不准确。

默认的dir() 机制对不同类型的对象表现不同,因为它试图产生最相关的,而不是完整的信息:

  • 如果对象是模块对象,则列表包含模块属性的名称。
  • 如果对象是类型或类对象,则列表包含其属性的名称,并递归地包含其基类的属性。
  • 否则,该列表包含对象的属性名称、其类的属性名称以及其类的基类属性的递归名称。

结果列表按字母顺序排序。例如:

>>> import struct
>>> dir()   # show the names in the module namespace  
['__builtins__', '__name__', 'struct']
>>> dir(struct)   # show the names in the struct module 
['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',
 '__initializing__', '__loader__', '__name__', '__package__',
 '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',
 'unpack', 'unpack_from']
>>> class Shape:
...     def __dir__(self):
...         return ['area', 'perimeter', 'location']
>>> s = Shape()
>>> dir(s)
['area', 'location', 'perimeter']

注意

因为提供dir() 主要是为了方便在交互式提示中使用,所以它尝试提供一组有趣的名称,而不是尝试提供一组严格或一致定义的名称,并且其详细行为可能会随版本而变化。例如,当参数是类时,元类属性不在结果列表中。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 dir。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。