我必须为C API创建一个python-wrapper。我使用ctypes
从python调用C dll。我能够创建Handle并从python中使用它。我在Python中寻找类似于C#的Dispose模式。在python中是否存在Dispose模式?
答案 0 :(得分:1)
Python具有:
try ... finally
,相当于C#中的类似构造; with
语句,类似于C#中的using(... = new ...())
。请注意,与C#不同,with
语句接受已构造的对象,进入时调用__enter__
,退出时调用__exit__
。即对象在__init__
中初始化,资源在__enter__
中获取并在__exit__
中进行处置。因此,此类对象可以多次使用。
使用contextlib.closing
,可以更接近C#。在__init__
中获取资源并在close
方法中进行配置。 contextlib.closing
基本上是包装器,它在其close
中调用__exit__
。
在您的情况下,您应该在__init__
中进行所有准备工作,在__enter__
中获取实际的句柄,然后在__exit__
中进行处理。