저는 Python 기반 API의 디자인 작업을하고 있습니다. 지금은 두 가지 다른 요구 사항을 가진 문제를 만났습니다. 한편으로는 API 관련 리소스를 정리하는 안정적인 방법을 제공하고자합니다. 내가 완벽하게 대화 형 인터프리터 내 lib 디렉토리를 사용하는 방법을 제공하고자하는 반면에python api를 디자인하는 중입니다. 신뢰할 수있는 정리 대 인터프리터에서 사용하기 편리합니다.
# lib
class Client(object):
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, tb):
do_cleanup()
def method1(self):
pass
def method2(self):
pass
# api user
import mylib
with mylib.Client() as client:
client.method1()
client.method2()
: 내가 할 수있는 최선의 방법을 알고 이에로는 같은 맥락 관리자를 사용하는 것입니다. with
또는 try-except-finally
과 같은 복합 구조체를 인터프리터에 사용하면 with
-block이 단일 명령문으로 처리되기 때문에 인터프리터를 사용하지 않게됩니다. 내가 여기있는 옵션을 가질 수있다, 그래서
# interpreter session
>>> import mylib
>>> client = mylib.Client()
<client object at ...>
>>> client.method1()
True
>>> client.method2()
100
: 그리고 같은 하나의 API 메소드 당 하나의 문을 사용하는 것이 바람직 할 것이다이야? 확실히 스크립트와 인터프리터에 다른 사용법을 제공하는 방법이 있지만 최후의 수단으로 사용하고 싶습니다.
왜'open'이하는 것처럼 할; 컨텍스트 관리자를 사용하거나 명시 적으로'close' (이것은'__exit__'에 대한 호출로 쉽게 구현할 수 있습니다)를 사용할 수 있습니다. – jonrsharpe