python学习29——课后练习

# # 作业二:在昨天作业的基础之上
# # # 1、引入属性访问控制+property
# # # 2、引入继承与派生的概念来减少代码冗余
# # 注意:要满足什么"是"什么的关系,不满足"是"的关系不要去继承
# #

import pickle
import uuid


class School():
school_name = 'OLDBOY'

def __init__(self, name, addr):
self.uid = uuid.uuid4()
self.nickname = name
self.addr = addr
self.classes = []

def related_class(self, class_obj):
self.classes.append(class_obj.uid)

def getinfo_class(self):
print(self.nickname.center(60, '-'))
for class_uid in self.classes:
with open(f'{class_uid}.pkl', 'rb')as f:
class_obj = pickle.load(f)
class_obj.getinfo_course()

@property
def save(self):
with open(f'{self.uid}.pkl', 'wb')as f:
pickle.dump(self, f)
return


class Class:
def __init__(self, name):
self.uid = uuid.uuid4()
self.name = name
self.course = None

def related_course(self, course_obj):
self.course = course_obj.uid


def getinfo_course(self):
print('%s' % self.name, end=" ")
with open(f'{self.course}.pkl', 'rb')as f:
course_obj = pickle.load(f)
course_obj.getinfo_course()

@property
def save(self):
with open(f'{self.uid}.pkl', 'wb')as f:
pickle.dump(self, f)
return


class Course:
def __init__(self, name, period, price):
self.uid = uuid.uuid4()
self.name = name
self.period = period
self.price = price


def getinfo_course(self):
print(f'<课程名:{self.name} 周期:{self.period} 价钱:{self.price}>')

@property
def save(self):
with open(f'{self.uid}.pkl', 'wb')as f:
pickle.dump(self, f)
return


class People:
school_name = 'OldBoy'
def __init__(self, school, name, age, gender):
self.uid = uuid.uuid4()
self.school = school
self.name = name
self.age = age
self.gender = gender


class Student(People):
# 学生的学校
# 学生的姓名
# 学生的年龄
# 学号
# 学生的性别
def __init__(self,number):
super().__init__()
self.uid = uuid.uuid4()
self.number = number

@property
def getinfo_student(self):
print(f'<学生信息: 校区:{self.school},名字:{self.name},年龄:{self.age},学号:{self.number},性别:{self.gender}>')
return

def choose(self, course_obj):
self.course = course_obj.uid

@property
def save(self):
with open(f'{self.uid}.pkl', 'wb')as f:
pickle.dump(self, f)
return

class Teacher(People):
def __init__(self,level):
super().__init__()
self.uid = uuid.uuid4()
self.__level = level

@property
def level(self):
return self.__level

def give_rate(self,student_name,rate):
print(f'{student_name}得分:{rate}')

@property
def save(self):
with open(f'{self.uid}.pkl', 'wb')as f:
pickle.dump(self, f)
return
 school_obj1 = School('上海校区', '虹桥')
# school_obj2 = School('北京校区', '北京某地')
# class_obj1 = Class('脱产14期')
# class_obj2 = Class('脱产29期')
# course_obj1 = Course('python全栈', '6mons', '20000')
# course_obj2 = Course('linux运维', '5mons', '18000')
# student_obj1 = Student('上海校区', '西楼', '24', '007', '男')
# student_obj2 = Student('北京校区', '黑人', '18', '666', '男')

猜你喜欢

转载自www.cnblogs.com/heirenxilou/p/12669715.html