teribsandy 发表于 2018-4-8 18:10:37

零基础学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啊

BngThea 发表于 2018-4-8 18:25:54

1你可以试试在后面继续
del a   
del b

2 本来就没有执行if里面的语句

jiajiaself 发表于 2019-12-23 16:20:10

BngThea 发表于 2018-4-8 18:25
1你可以试试在后面继续
del a   
del b


您好请问 第一题文件的那个题目,我通过del对象调用了 __del__魔法方法。问题是 此刻已通过del讲对象删除,那这样的话,还可以执行 __del__魔法方法中对该对象实例属性的文件关闭和删除操作吗?

BngThea 发表于 2020-3-21 15:43:19

jiajiaself 发表于 2019-12-23 16:20
您好请问 第一题文件的那个题目,我通过del对象调用了 __del__魔法方法。问题是 此刻已通过del讲对象删 ...

不能

straightup 发表于 2020-5-31 20:02:36

你好,我想问一下动动手0中最后一行代码" del self.f " 起什么作用?删除文件不是在外部进行的吗?
页: [1]
查看完整版本: 零基础学python041讲 动动手0和动动手2