【发布时间】:2011-03-09 21:21:48
【问题描述】:
我有一个 python 对象,它在系统上包装了一个敏感且重要的资源。我有一个cleanup() 函数,可以安全地释放对象使用的各种锁。
我想确保在调用cleanup() 之后对象变得不可用。理想情况下,对对象的任何成员函数的任何调用都会引发异常。有没有一种方法可以不涉及检查每个函数中的标志?
【问题讨论】:
-
您是否在
with语句的上下文中使用它?你在使用上下文管理器协议吗? -
刚刚花了一些时间弄清楚我是否会在所有运行此代码的系统上至少安装 python 2.5,看起来我真的不能指望这一点。太糟糕了——这正是确保我没有杂散参考的正确方法。
-
“真的不能指望”?为什么不?让它成为一个要求。需要 Python 2.6 有什么问题?
-
唉,主要的 linux 服务器发行版之一(RHEL 5 / CentOS 5)仍然附带 Python 2.4。在这些系统上升级 python 非常困难,它们是我正在为其编写软件的环境组合的一部分。
-
“非常难”?我们经常这样做。是什么让它“非常难”?我错过了一些隐藏的复杂性吗?
标签: python object resources destructor