ホームページ  >  記事  >  バックエンド開発  >  Python関数 dir() 関数

Python関数 dir() 関数

巴扎黑
巴扎黑オリジナル
2017-08-17 11:03:102476ブラウズ

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() メカニズムは、完全な情報ではなく、最も関連性の高い情報を生成しようとするため、オブジェクトのタイプによって動作が異なります。

オブジェクトがモジュール オブジェクトの場合の場合、リストにはモジュールの属性の名前が含まれます。

オブジェクトが型またはクラス オブジェクトの場合、リストにはその属性の名前が含まれ、そのベースの属性の名前が再帰的に含まれます。

それ以外の場合、リストにはオブジェクトの属性の名前が含まれます。属性の名前、そのクラスの属性の名前、およびそのクラスの基本クラスの属性の再帰的名前。

以上がPython関数 dir() 関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。