相关疑难解决方法(0)

我不明白这个python __del__行为

有人可以解释为什么以下代码的行为方式如下:

import types

class Dummy():
    def __init__(self, name):
        self.name = name
    def __del__(self):
        print "delete",self.name

d1 = Dummy("d1")
del d1
d1 = None
print "after d1"

d2 = Dummy("d2")
def func(self):
    print "func called"
d2.func = types.MethodType(func, d2)
d2.func()
del d2
d2 = None
print "after d2"

d3 = Dummy("d3")
def func(self):
    print "func called"
d3.func = types.MethodType(func, d3)
d3.func()
d3.func = None
del d3
d3 = None
print "after d3"
Run Code Online (Sandbox Code Playgroud)

输出(注意d2的析构函数从不被调用)是这个(python 2.7)

delete d1
after d1
func called
after …
Run Code Online (Sandbox Code Playgroud)

python del

33
推荐指数
4
解决办法
4万
查看次数

文件句柄在超出范围后是否会在Python中自动关闭?

如果我执行以下操作,文件句柄会在Python中超出范围时自动关闭:

def read_contents(file_path):
  return file(file_path).read()
Run Code Online (Sandbox Code Playgroud)

如果没有,我该怎么写这个函数来自动关闭范围?

python scope file

22
推荐指数
2
解决办法
8373
查看次数

保证文件关闭

我有一个类,我在构造函数中创建一个文件对象.这个类还实现了finish()方法作为其接口的一部分,在这个方法中我关闭了文件对象.问题是,如果我在此之前得到异常,则不会关闭该文件.有问题的类有许多其他使用文件对象的方法.我是否需要在try finally子句中包含所有这些,还是有更好的方法?

谢谢,

巴里

python

5
推荐指数
1
解决办法
236
查看次数

标签 统计

python ×3

del ×1

file ×1

scope ×1