零基础学python041讲 动动手0和动动手2
动动手0:写一个FileObject类,给文件对象进行包装,从而确认在删除对象时文件能自动关闭。动动手2:定义一个类继承int,实现一个特殊功能,当传人的参数为字符串时,返回字符串的所有字符的ascii码和。
我的代码如下:
class FileObject:
def __init__(self,filename='Turtle.py'):
self.filename=filename
self.f=open(self.filename,'r+')
print self.f.read()
def __del__(self):
self.f.close()
del self.f
a=FileObject()
b=a
c=b
del c
print '我是一条分割线================ '
class Nint(int):
def __new__(cls,string):
if isinstance(string,str):
total=0
for each in string:
total+=ord(each)
string=total
print int.__new__(cls,string)
a=Nint(123)
运行结果如图所示
(1)想知道为什么__del__()方法只执行了 del c语句,而没有del c,del b,del a 时这个文件到底关闭了没?还有 del c,del b,del a这三个语句的顺序有关系吗
(2)为什么 123也能被执行不报错,因为 if isinstance(123,str)=False啊
1你可以试试在后面继续
del a
del b
2 本来就没有执行if里面的语句 BngThea 发表于 2018-4-8 18:25
1你可以试试在后面继续
del a
del b
您好请问 第一题文件的那个题目,我通过del对象调用了 __del__魔法方法。问题是 此刻已通过del讲对象删除,那这样的话,还可以执行 __del__魔法方法中对该对象实例属性的文件关闭和删除操作吗? jiajiaself 发表于 2019-12-23 16:20
您好请问 第一题文件的那个题目,我通过del对象调用了 __del__魔法方法。问题是 此刻已通过del讲对象删 ...
不能 你好,我想问一下动动手0中最后一行代码" del self.f " 起什么作用?删除文件不是在外部进行的吗?
页:
[1]