파이썬의 with
문을 실험하고 있는데, __exit__
메서드가 한 번 호출되는 동안 내 __init__
메서드가 두 번 호출되는 코드를 발견했습니다. 이것은 아마도이 코드가 아무런 도움이되지 않는다면 리소스 누출이 일어날 것임을 의미합니다. 내가 효과적으로 생성자를 직접 호출의 with
문에 뭔가 잘못하고 있어요 그것 때문에 추측하고있어문이있는 파이썬
Constructing MyResource
Entering MyResource
Constructing MyResource
Some function
Cleaning up MyResource
:
class MyResource:
def __enter__(self):
print 'Entering MyResource'
return MyResource()
def __exit__(self, exc_type, exc_value, traceback):
print 'Cleaning up MyResource'
def __init__(self):
print 'Constructing MyResource'
def some_function(self):
print 'Some function'
def main():
with MyResource() as r:
r.some_function()
if __name__=='__main__':
main()
이
프로그램의 출력입니다. 이 문제를 어떻게 해결합니까?
답변 해 주셔서 감사합니다. 뒤늦은 지경에서 지금은 분명히 분명합니다. :) – CadentOrange