我正在試驗Python的with
語句,我發現在下面的代碼清單中我的__init__
方法被調用兩次,而我的__exit__
方法被調用一次。這大概意味着如果這段代碼做了任何有用的工作,將會有資源泄漏。Python語句
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()
這是程序的輸出:
Constructing MyResource
Entering MyResource
Constructing MyResource
Some function
Cleaning up MyResource
我猜這是因爲我做錯了在with
聲明,有效地手動調用構造函數。我該如何糾正?
感謝您的答案。現在事後相當明顯:) – CadentOrange