- 如图的继承关系,然后验证经典类与新式类在查找一个属性时的搜索顺序
class B: # def test(self): # print("from B") passclass C: # def test(self): # print("from C") passclass D(B,C): # def test(self): # print("from D") passclass E(B,C): def test(self): print("from E") passclass F(D,E): # def test(self): # print("from F") passf = F()f.test()# new class (广度优先)''' F==>D==>E==>B==>C '''# classical class (深度优先)''' F==>D==>B==>C==>E '''
- 基于多态的概念来实现linux中一切皆问题的概念:文本文件,进程,磁盘都是文件,然后验证多态性
class file(object): def __init__(self,contents): self.contents = contents def cat(self): print("contents:%s"%(self.contents))class process(file): file_type = 'pid' def cat(self): print("file_type : %s" %self.file_type) #三种方法 调用父类对象,1.super附带当前类名、self代表父类 2.super不附带任何参数 3.父类.方法(self) super(process, self).cat() #super().cat() # file.cat(self)class disk(file): file_type = 'disk' def cat(self): print("file_type : %s" %self.file_type) #三种方法 调用父类对象,1.super附带当前类名、self代表父类 2.super不附带任何参数 3.父类.方法(self) super(disk, self).cat() #super().cat() # file.cat(self) def cat_file(obj): ''' 调用函数绑定方法 ''' obj.cat()proc1 = process("some things")disk1 = disk("disgusting things")cat_file(proc1)cat_file(disk1)
- 定义老师类,把老师的属性:薪资,隐藏起来,然后针对该属性开放访问接口 苑昊老师有多种癖好,把这种癖好隐藏起来,然后对外提供访问接口 而且以后还会苑昊老师培养很多其他的癖好,对外开放修改接口,可以新增癖好,并且需要保证新增的癖好都是字符串类型,否则无法增加成功。
class Teacher(object): __salary = 100 __hobby = ["kiss egon's ass","和EGON睡觉"] def __init__(self,name,age,): self.name,self.age = name,age def get_salary(self): return self.__salary def get_hobby(self): for x in self.__hobby: yield x def add_hobby(self,new_hobby): if type(new_hobby) == str: self.__hobby.append(new_hobby) else: print("error!")t = Teacher("苑昊", 16)print(t.get_salary())print("[",t.name,"]","hobby list\n-----")for x in t.get_hobby(): print(x)print("-----")t.add_hobby("女装")print(t.get_salary())print("[",t.name,"]","hobby list\n-----")for x in t.get_hobby(): print(x)print("-----")