在***Python***中如果对象定义了`__del__`方法的话,在对象的引用记数为0时会自动调用`__del__`方法 (很象c++中的析构函数),但如果A对象引用B对象,B对象又引用A对象,就形成循环引用,此时A,B对象 引用次数都为1。python就无法正常调用`__del__`方法,原计划在`__del__`方法里释放的资源自然也就无 法释放。 一个连接池拥有多个连接,而每个连接又拥有这个连接池的实例(一个叫pool的属性)。这样就产生了刚刚 说的哪个问题。我想到的办法就是在每次从池中获取连接的时候将连接的pool设置为当前实例,然后在归 还这个连接的时候再将其设置为***None***,并且要在这个连接对象的`__del__`方法中将pool属性设置为 ***None***。具体看代码吧。(目前只实现了SQLite3的)