零基础学习Python 作业 第40章

0.是哪个特殊让我们一眼 就能认出 这货是魔法方法?

__init__双下划线开头结尾

 

1.类实例化对象所调用的第一个方法是什么?

答: __new__他的第一个参数是cls ,他的其他的参数会传递给__init__方法!

 

2.什么时候我们需要类中明确写出__init__方法?

答: 当我们实例对象需要有明确初始化步骤时候,可以在init中初始化代码

 

3.请问下边代码存在什么问题?

class  Test:

      def  __init__(self,x,y):

              return x + y

答:__init__方法返回值一定是None ,不能是其它!

 

 

4.请问__new__方法时负责什么任务?

构建函数,返回一个实例对象,通常是参数cls这个类的实例对象,当日你也也可返回其它对象。

5.__del__魔法方法什么时候回被自动调用?

答:  如果说 __init__  和  __new__方法时对象的构造器的话,__del__就是析构器,当对象将要销毁时候,调用这个方法

 

 

动手题:

0.写一个FileObject类,给文件对象进行封装,从而确定在删除对象时文件能自动关闭?

class FileObject:
""" 给文件对象进行包装从而确定在删除是文件刘关闭
"""
def __init__(self,filename ='My_File.txt'):
self.new_file = open(filename,'r+')
print (self.new_file.read())
def __del__(self):
self.new_file.close()
del self.new_file
a = FileObject()
a.__init__()

输出:

从后天起,做一个幸福的人
喂马、劈柴,周游世界
从后天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开

从后天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开
从后天起,做一个幸福的人
喂马、劈柴,周游世界
从后天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开

从后天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有情人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开

1.定义一个类 试下摄氏度到华氏度转换(华氏度 =  摄氏度* 1.8 +32)

class C2F(float):
def __new__(cls, arg = 0.0):
return float.__new__(cls,arg * 1.8 +32)

print(C2F(32))

#2.定义一个类继承于int类型 ,并实现一个特殊功能,当传入参数是字符串的时候,返回改字符串中所有字符的ASCII
#码和 使用ord()获得一个字符的ASCII码值


 


posted @ 2018-11-28 14:45  蘑菇慢慢  阅读(125)  评论(0)    收藏  举报