dir() Python 組み込み関数

組み込み関数 dir()

dir()
属性名を取得します。引数が有りの場合は、引数に指定したオブジェクトの属性を取得します。
引数がない場合は、現在のローカルスコープにある名前のリストを返します。

オブジェクトが dir() という名のメソッドを持つ場合は、そのメソッドが呼び出され、属性のリストを返す必要があります。
このことにより、カスタムのgetattr()や、getattribute()関数を実装するオブジェクトは、dir()が属性を報告の仕方をカスタマイズできます。

デフォルトの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']

使用例

print(dir())
# 実行結果 
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']

a = 10
l = []

print(dir())
# 実行結果 
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'l']

print(dir(tuple))
# 実行結果 ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
よかったらシェアしてください!
目次