1.作业一:实现如图的继承关系,然后验证经典类与新式类在查找一个属性时的搜索顺序
#coding:utf8
#载入内存时的编码方式
class B(object):
def __init__(self):
pass
def test(self):
print(" I is from B")
class C(object):
def __init__(self):
pass
def test(self):
print("I is from C")
class D(B):
def __init__(self):
pass
def test(self):
print("I is from D")
class E(C):
def __init__(self):
pass
def test(self):
print("I is from E")
class F(D,E):
def __init__(self):
pass
def test(self):
print("I is from F")
f1 =F()
f1.test()
# 经典类:py2: F--->D--->B--->E-->C 如果此时C也不到,那就直接报错
# 新式类:py2/3 :F-->D-->B--->E--->C--->object 如果此时object也不到,那就直接报错
print (F.mro())
2.作业二:基于多态的概念来实现linux中一切皆问题的概念:文本文件,进程,磁盘都是文件,然后验证多态性
#coding: utf8
import abc
class stata(metaclass=abc.ABCMeta):
@abc.abstractmethod
def read(self):
print("发起一个系统调用 打开")
@abc.abstractmethod
def write(self):
print("发起一个系统调用,保存")
class cattext(stata):
def read(self):
super(cattext,self).read()
print("cat text")
def write(self):
super(cattext,self).write()
print("write concat in file and wf")
class process(cattext):
def read(self):
super(process,self).read()
print("已经打开文件产生pid")
def write(self):
super(process,self).write();
print("正关闭文件,并删除pid信息")
def func_r(obj,file): #统一接口读
obj.read()
file.read()
def func_w(obj,file): #统一接口写
obj.write()
file.write()
ca = cattext()
p = process()
func_r(p,ca)
func_w(p,ca)
运行结果 :
发起一个系统调用 打开
cat text
已经打开文件产生pid
发起一个系统调用 打开
cat text
发起一个系统调用,保存
write concat in file and wf
正关闭文件,并删除pid信息
发起一个系统调用,保存
write concat in file and wf
# func_r(p)
# func_r(ca)
# func_w(ca)
# func_w(p)
# catfile = cattext()
# p = process()
# catfile.read()
# p.read()
# catfile.write()
# p.write()
3.作业三:定义老师类,把老师的属性:薪资,隐藏起来,然后针对该属性开放访问接口
苑昊老师有多种癖好,把这种癖好隐藏起来,然后对外提供访问接口
而且以后还会苑昊老师培养很多其他的癖好,对外开放修改接口,可以新增癖好,并且需要
保证新增的癖好都是字符串类型,否则无法增加成功。
#coding:utf8
class Teacher(object):
__salary = 18000
def __init__(self,name,age):
self.name = name
self.age = age
def getSalary(self):
"""薪资"""
return ("%s 同学的薪资为 %d"%(self.name,self.__salary))
def __Mania(self,piter = []):
"""癖好"""
self.piter = piter
return self.piter
def getMania(self,Mania_value):
"""得到癖好"""
self.Mania_value = Mania_value
if type(self.Mania_value) == list:
for v in self.Mania_value:
if type(self.__Mania()) == str:
self.__Mania().append(v)
for i in self.__Mania(Mania_value):
print(i)
tea1 = Teacher('苑昊',20)
print(tea1.getSalary())
print("请输入%s" %tea1.name + "的喜好")
print("%s: \n有如下爱好:" % (tea1.name,))
tea1.getMania(["溜口秀","大保健","沾蜜枣"])
tea1.getMania(["1溜","1大健","沾蜜"])
运行结果:
苑昊 同学的薪资为 18000
请输入苑昊的喜好
苑昊:
有如下爱好:
溜口秀
大保健
沾蜜枣
1溜
1大健
沾蜜