dir() 関数
中国語の説明:
組み込みの dir 関数を使用して、モジュール定義の識別子をリストできます。識別子には、関数、クラス、変数が含まれます。
dir() にモジュール名を指定すると、モジュールによって定義された名前のリストが返されます。引数が指定されていない場合は、現在のモジュールで定義されている名前のリストが返されます。
まず、入力 sys モジュールで dir を使用する方法を見てみましょう。膨大なプロパティのリストが含まれていることがわかります。
次に、引数を渡さずに dir 関数を使用します。デフォルトでは、現在のモジュールのプロパティ リストが返されます。インポートされたモジュールもリストの一部であることに注意してください。
dir の効果を観察するために、新しい変数 a を定義してそれに値を代入し、上記と同じ値がリストに追加されていることを確認します。 del ステートメントを使用して現在のモジュールの変数/プロパティを削除します。この変更は再び dir の出力に反映されます。
del についてのちょっとしたメモ - このステートメントは、実行後に変数/名前を削除するために使用されます。この例では、del a、変数 a は使用できなくなり、変数 a は存在しなかったかのようになります。
バージョン:
この関数はすべてのバージョンでサポートされており、python3 でも引き続き使用できます。
コード例:
>>> import struct >>> dir() # show the names in the module namespace ['__builtins__', '__doc__', '__name__', 'struct'] >>> dir(struct) # show the names in the struct module ['Struct', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from'] >>> class Shape(object): def __dir__(self): return ['area', 'perimeter', 'location'] >>> s = Shape() >>> dir(s) ['area', 'perimeter', 'location']
英語の説明:
dir([object])
引数を指定しない場合は、現在のローカル スコープ内の名前のリストを返します。 引数を指定すると、有効な名前のリストを返します。オブジェクトに __dir__() という名前のメソッドがある場合、このメソッドが呼び出され、属性のリストを返す必要があります。これにより、カスタム __getattr__() または __getattribute__() 関数を実装するオブジェクトが方法をカスタマイズできるようになります。 dir() はその属性を報告します。
オブジェクトが __dir__() を提供しない場合、関数はオブジェクトの __dict__ 属性 (定義されている場合) およびその型オブジェクトから情報を収集しようと最善を尽くします。結果として得られるリストは必ずしも完全ではありません。オブジェクトにカスタム __getattr__() がある場合は不正確になる可能性があります。
デフォルトの dir() メカニズムは、完全ではなく最も関連性の高い情報を生成しようとするため、オブジェクトのタイプによって動作が異なります。がモジュール オブジェクトである場合、リストにはモジュールの属性の名前が含まれます。
オブジェクトが型またはクラス オブジェクトの場合、リストにはその属性の名前が含まれ、そのベースの属性の名前が再帰的に含まれます。
それ以外の場合、リストには、オブジェクトの属性の名前、そのクラスの属性の名前、およびそのクラスの基本クラスの属性の再帰的な名前が含まれます。