作业20200409
题目1:菱形问题的属性查找顺序
# python多继承菱形结构继承
# 经典类:
- 深度优先,一个分支找到尽头再从另一个分支开始查找
# 新式类
- 广度优先,一个分支不找到尽头,就开始另一个分支,等到最后一个分支再找尽头,最后再找object
作业2
import pickle
import uuid
class School:
school_name = 'OLDBOY'
def __init__(self, nickname, addr):
self.__nickname = nickname
self.__addr = addr
self.uuid = uuid.uuid4()
self.classes = []
self.save_info()
@property
def nickname(self):
return self.__nickname
@nickname.setter
def nickname(self, value):
if not isinstance(value, str):
print('名字必须是字符串')
return
self.__nickname = value
@nickname.deleter
def nickname(self):
print('不能删除名字')
def relate_class(self, class_obj):
self.classes.append(class_obj.uuid)
self.save_info()
def save_info(self):
with open(f'db\\school_file\\{self.uuid}.pkl', 'wb') as f:
pickle.dump(self, f)
def get_class(self):
print(self.__nickname.center(60, '='))
# 打印班级开设的课程信息
for class_uuid in self.classes:
with open(f'db\\class_file\\{class_uuid}.pkl', 'rb') as f:
class_obj = pickle.load(f)
class_obj.get_course()
class_obj.get_student()
class Class:
def __init__(self, name):
self.__name = name
self.course = None
self.students = []
self.uuid = uuid.uuid4()
self.save_info()
@property
def name(self):
return self.__name
@name.setter
def name(self, value):
if not isinstance(value, str):
print('名字必须是字符串')
return
self.__name = value
@name.deleter
def name(self):
print('不能删除名字')
def relate_course(self, course_obj):
self.course = course_obj.uuid
self.save_info()
def save_info(self):
with open(f'db\\class_file\\{self.uuid}.pkl', 'wb') as f:
pickle.dump(self, f)
def get_course(self):
print('%s' % self.name, end=" ")
with open(f'db\\course_file\\{self.course}.pkl', 'rb') as f:
course_obj = pickle.load(f)
course_obj.course_info()
def get_student(self):
print('%s' % self.name, end=" ")
for student_uuid in self.students:
with open(f'db\\student_file\\{student_uuid}.pkl', 'rb') as f:
student_obj = pickle.load(f)
student_obj.student_info()
class Course:
def __init__(self, name, period, price):
self.name = name
self.period = period
self.price = price
self.uuid = uuid.uuid4()
self.save_info()
@property
def course_info(self):
return '<课程名:%s 周期:%s 价钱:%s>' % (self.name, self.period, self.price)
def save_info(self):
with open(f'db\\course_file\\{self.uuid}.pkl', 'wb') as f:
pickle.dump(self, f)
class People:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
self.uuid = uuid.uuid4()
class Teacher(People):
def __init__(self, name, age, sex, level):
People.__init__(self, name, age, sex)
self.level = level
self.classes = None
self.save_info()
def save_info(self):
pass
def score(self):
pass
@property
def my_class(self):
return self.classes
class Student(People):
def __init__(self, name, age, sex):
People.__init__(self, name, age, sex)
self.my_class = None
self.my_course = None
self.save_info()
@property
def student_info(self):
return '<学生名:%s 年龄:%s 性别:%s>' % (self.name, self.age, self.sex)
def relate_class(self, class_obj):
self.my_class = class_obj.uuid
self.my_course = class_obj.course.uuid
class_obj.students.append(self.uuid)
self.save_info()
class_obj.save_info()
def save_info(self):
with open(f'db\\student_file\\{self.uuid}.pkl', 'wb') as f:
pickle.dump(self, f)

浙公网安备 33010602011771号