异常AttributeError:“'NoneType'对象在<bound method =”“xxx .__ del __ =”“of =”“<yyy.xxx =”“object =”“at =”“0xd08c48c =”中没有属性'WARNING'“ “>&GT;忽略</绑定>

时间:2012-11-05 18:54:32

标签: python couchdb

首先介绍一下我的问题:我的(复杂)对象之一需要在被销毁时进行清理。原因是它有一个必须最终发送到couchdb实例的文档列表(保留列表以执行批量写入)。如果删除该对象,则必须将文档列表发送到服务器。

将列表发送到服务器是一个复杂的过程:在实际发送之前,您需要获取要更新的文档的当前版本。文档可能已经存在于couchdb中,可能会被删除等等。在这方面,Couchdb有点复杂。我只是提到这一点,以明确我不能仅仅为了解决我的问题而重新实现这个功能(见下文)。

在这个过程中,我依靠一些全局对象来执行一些操作:具体来说,我有一个模块log对象,就像我在我的所有代码中一样,来执行日志记录。

所有这些操作都是从我班级的__del__方法触发的。但是当我的对象被删除时,我收到错误消息:

Exception AttributeError: "'NoneType' object has no attribute 'WARNING'" in <bound method xxx.__del__ of <yyy.xxx object at 0xd08c48c>> ignored 

显然,删除对象时,模块log对象不存在。我的问题是:

  1. 为什么不再定义全局对象(在本例中为模块对象)?
  2. python以什么顺序删除全局对象?我可以更改此订单吗?我可以将对象标记为“最后删除”吗?
  3. 如何防止此行为?
  4. 如果这不能改变,我遇到了大麻烦。我的代码中存在相同的模式,我的类依赖于模块log对象来执行日志记录或任​​何其他模块对象。我的大多数类都没有实现__del__方法,但有些方法没有。

0 个答案:

没有答案