我读了这个问题,想到我也需要它,但是在Python中。因此,我想知道是否可以使用with
Python中的语句来做到这一点。
基本上,我想要的是Python中的某种IDisposable(C#)类比。我知道,肯定会有所不同,我认为是这样的:
class ForUseInWith(IDisposableLike):
#something here
pass
并像这样使用它:
with ForUseInWith() as disposable:
#something here
pass
目前,我正在研究如何学习python参考和PEP 343,如果我能做一个好的解决方案和一个聪明的例子,我将在这里发布答案。但顺便说一句,也许您可以帮助我。
这很容易做到,您只需要在类中具有__enter__
和__exit__
方法即可。
例:
class ForUseInWith(object):
def test(self):
print 'works!'
def __enter__(self):
return self
def __exit__(self, *args, **kwargs):
pass
使用它:
>>> with ForUseInWith() as disposable:
disposable.test()
works!
扩展它:
当然,您可以有一个__init__
接收参数的方法(就像open()
这样),并且还可以在__exit__
方法中包括处理错误/异常的方法。这种结构最适合用于简单的类,这些类也需要能够被处置,或者是一次性的过程,不需要停留或复杂的处置
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句