列出所有類成員

dir() 函式可用於獲取類成員的列表:

dir(Class)

例如:

>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

通常只檢視非魔法成員。這可以使用簡單的理解來完成,該理解列出名稱不以 __ 開頭的成員:

>>> [m for m in dir(list) if not m.startswith('__')]
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

注意事項:

類可以定義 __dir__() 方法。如果存在該方法,則呼叫 dir() 將呼叫 __dir__(),否則 Python 將嘗試建立該類的成員列表。這意味著 dir 函式可能會產生意外結果。來自官方 python 文件的兩個重要引用 :

如果物件沒有提供 dir (),則該函式會盡力從物件的 dict 屬性(如果已定義)和其型別物件中收集資訊。結果列表不一定完整,並且當物件具有自定義 getattr () 時可能不準確。

注意: 因為 dir() 主要是為了方便在互動式提示中使用而提供的,所以它嘗試提供一組有趣的名稱,而不是嘗試提供嚴格或一致定義的名稱集,並且其詳細行為可能會發生變化版本。例如,當引數是類時,元類屬性不在結果列表中。