當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。