378 Chapter 9
enter exit init
메서드로 컨텍스트 관리하기
처음에는 컨텍스트 관리 프로토콜이라는 것이 아주 어려운 것처럼 보일 수 있지만 알고 나면 아주
간단합니다. 컨텍스트 관리 프로토콜을 준수하는 모든 클래스는
__
enter
__
와
__
exit
__
두
개의 요술 메서드를 반드시 정의해야 하며, 이 프로토콜을 준수하도록 클래스를 구현하면
with
문과 연결할 수 있습니다.
던더 ‘enter’는 설정을 담당합니다
객체에
with
문을 사용하면 인터프리터는
with
문의 스위트를 시작하기 전에 객체의
1
__
enter
__
메서드를 호출합니다. 따라서 던더
enter
내에서 필요한 설정 작업을 수행할 수
있는 기회가 주어집니다.
프로토콜은 던더
enter
가
with
문에 반환값을 제공할 수 있음(선택사항)을 명시합니다(이
사실이 중요한 이유는 잠시 후에 살펴봅니다).
던더 ‘exit’는 마무리를 담당합니다
with
문의 스위트가 끝나면 인터프리터는 항상 객체의
__
exit
__
메서드를 호출합니다.
따라서
__
exit
__
메서드에서 필요한 마무리 작업을 수행할 수 있습니다.
with
문의 스위트가 예외 발생 등으로 인해 정상적으로 동작하지 않을 수도 있으므로 여러
상황에 대비할 수 있도록 던더
exit
메서드를 구현해야 합니다. 나중에 던더
exit
메서드를
구현할 때 이 문제를 더 자세히 살펴봅니다.
1
__
enter
__
와
__
exit
__
메서드를 클래스에 정의하면 인터프리터는 자동으로 해당 클래스를
컨텍스트 관리자로 ...