- withはファイルを開くためによく使用され、withを使用すると、エラーが発生した場合でも自動的に閉じることができます
- コンテキストとは何ですか?
- コンテキストは実際には鈍く、記事のコンテキストは意味です、もう少し人気があるので、環境を呼び出すほうが良いと思います
- コンテキストはコンテキストと呼ばれますが、通常はプログラムでは上記のものだけですが、コンテキストへの呼び出しにすぎません。。
- オペレーティングシステムのプロセスの中断には浮き沈みがありますが、この深い質問については掘り下げません。
- enter()およびexit()メソッドを実装するオブジェクトは、コンテキストマネージャーと呼ばれ、
コンテキストマネージャーオブジェクトはwithキーワードを使用できます。明らかに、ファイルオブジェクトはコンテキストマネージャも実装しています。
- では、ファイルオブジェクトはこれらの2つのメソッドをどのように実装するのでしょうか。独自のファイルクラスをシミュレートして実装し
、クラスにenter()メソッドとexit()メソッドを実装させることができます。
class File():
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
print("entering")
self.f = open(self.filename, self.mode)
return self.f
def __exit__(self, *args):
print("will exit")
self.f.close()
with File('out.txt', 'w') as f:
print("writing")
f.write('hello, python')