零基础学习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码值
