簡単な例をまず
(オープンで' file.txtを'、' W ' :ファイルなど) file.write(' テキスト')
4つのステップの実行:ファイルを開く - >閉じるファイル - >戻り値は読み取りおよび書き込み>ファイル - に割り当てられ
最初の3つのステップが対応する文に対応することができ、彼らはどこから来た第四のステップはありますか?
これは、制御フロー計算書については、このメカニズムからでなければなりません
メカニズムを説明する前に、まずファイルを読み書きするための一連の作業を見て
オープン - >書き込み - >閉じます
もちろん、ファイル操作よりも、このようなステップがあります
多くの同様の操作がPythonでそれがあります
これらの操作を簡素化するために、Pythonは非常に巧妙な方法を使用しています
この方法は、「コンテキスト管理プロトコル」、「コンテキストマングメントプロトコル」と呼ばれています
クラス__enterで定義されている2つの方法では__、_ exit__暗黙のエントリとのクリアランスを達成するために使用
try-最終的には、特定のステップの同等文としてで-行わ:
してみてください: 表現 __enter__ () with_block 最後に: __exit__()
だから、前の例第四段階の方法が__exit__実際にあります
もちろん、と-として彼自身の声明スコープを持っています
クラスのみ持つ__enter __、__ exit__方法
このクラスのインスタンスは、と-などのステートメントを使用することができます