我希望在一个类中使用ConfigParser,它需要从析构函数中调用,但是会发生奇怪的事情。
这是我的代码:
"""
function name is
test ok!
test1 failed!
test2 failed!
test3 failed!
test4
... ok!
"""
def test3():
pass
class Class1:
def __del__(self):
test3()
if __name__=="__main__":
obj=Class1()
如果函数命名为test1
、test2
或者test3
,那么将会抛出异常,且无法通过try except
捕获。
异常信息如下:
E:\tc.py
Exception TypeError: "'NoneType' object is not callable" in <bound method Class1.__del__ of <__main__.Class1 instance at 0x00C18F58>> ignored
这太奇怪了!你能在你的系统中测试一下吗?还是我做错了什么?
__del__
更类似于Java的finalizers而非C++的析构函数。在现代Python中,使用with
语句释放资源是正确的习惯用法(try-finally
只是一个次要的选择)。 - NPE