day 20 作业
作业
-
1 1 1
1 2 1
3 2 3
查找顺序:子类--->父类
-
G D A B
F C B D A
非菱形继承
菱形继承
-
新式类
继承了object的类及其子类,都是新式类
经典类
没有继承object的类及其子类,都是经典类
区别:
新式类继承了object类,python3中所有的类都是新式类,只有python2中才有经典类
深度优先:
直接先去找多个类最后继承的类,也就是object的子类
广度优先:
不找多个类最后继承的同一个类,直接去找下一个父类
-
import hashlib import datetime import pickle class People: def __init__(self, name, gender, age): self.name = name self.gender = gender self.age = age def save(self): with open(f'{self.creat_id()}.pkl', 'wb') as f: pickle.dump(self, f) def get_obj_by_id(self, tea_id): return pickle.load(open(f'{tea_id}.pkl', 'rb')) class Teacher(People): def __init__(self, name, gender, age, level, salary): super().__init__(name, gender, age) self.level = level self.salary = salary def tell_info(self): tea_id = self.creat_id() print(f'id:{tea_id}, name:{self.name}, gender:{self.gender}, age:{self.age}, level:{self.level}, salary:{self.salary}') def creat_id(self): m = hashlib.md5() m.update(str(datetime.datetime.today()).encode('utf8')) m.update(self.name.encode('utf8')) m.update(self.gender.encode('utf8')) m.update(str(self.age).encode('utf8')) m.update(self.level.encode('utf8')) m.update(str(self.salary).encode('utf8')) tea_id = m.hexdigest() return tea_id class Student(People): def tell_info(self): tea_id = self.creat_id() print(f'id:{tea_id}, name:{self.name}, gender:{self.gender}, age:{self.age}') def creat_id(self): m = hashlib.md5() m.update(str(datetime.datetime.today()).encode('utf8')) m.update(self.name.encode('utf8')) m.update(self.gender.encode('utf8')) m.update(str(self.age).encode('utf8')) tea_id = m.hexdigest() return tea_id tea1 = Teacher('tiny', 'male', 18, 'S', 20000) tea1.tell_info() # tea1.save() res = tea1.get_obj_by_id('ad415940992f716a042bcebfa11336f0') print(res) stu1 = Student('nick', 'male', 20) stu1.tell_info() # stu1.save() print(stu1.get_obj_by_id('aa6ac4009a17e1a415cbf5fbad7a3ab6'))