讲解
class School:
school_name = 'OLDBOY'
def __init__(self, nickname, addr):
self.nickname = nickname
self.addr = addr
self.classes = []
def related_class(self, class_obj):
# self.classes.append(班级名字)
# self.classes.append(class_name)
self.classes.append(class_obj)
def tell_class(self): # 改
# 打印的班级的名字
print(self.nickname.center(60,'='))
# 打印班级开设的课程信息
for class_obj in self.classes:
class_obj.tell_course()
# # 一:学校
# #1、创建校区
school_obj1=School('老男孩魔都校区','上海')
school_obj2=School('老男孩帝都校区','北京')
#
# #2、为学校开设班级
# # 上海校区开了:脱产14期,上海校区开了脱产15期
# school_obj1.related_class("脱产14期")
# school_obj1.related_class("脱产15期")
#
# # 北京校区开了:脱产29期
# school_obj2.related_class("脱产29期")
#
# #3、查看每个校区开设的班级
# school_obj1.tell_class()
# school_obj2.tell_class()
class Class:
def __init__(self, name):
self.name = name
self.course = None
def related_course(self, course_obj):
# self.course = course_name
self.course = course_obj
def tell_course(self):
print('%s' % self.name,end=" ")
self.course.tell_info() # 打印课程的详细信息
# 二:班级
# 1、创建班级
class_obj1 = Class('脱产14期')
class_obj2 = Class('脱产15期')
class_obj3 = Class('脱产29期')
# 2、为班级关联一个课程
# class_obj1.related_course('python全栈开发')
# class_obj2.related_course('linux运维')
# class_obj3.related_course('python全栈开发')
# 3、查看班级开设的课程信息
# class_obj1.tell_course()
# class_obj2.tell_course()
# class_obj3.tell_course()
# 4、为学校开设班级
# 上海校区开了:脱产14期,上海校区开了脱产15期
school_obj1.related_class(class_obj1)
school_obj1.related_class(class_obj2)
# 北京校区开了:脱产29期
school_obj2.related_class(class_obj3)
# school_obj1.tell_class()
# school_obj2.tell_class()
class Course:
def __init__(self,name,period,price):
self.name=name
self.period=period
self.price=price
def tell_info(self):
print('<课程名:%s 周期:%s 价钱:%s>' %(self.name,self.period,self.price))
# 三:课程
# 1、创建课程
course_obj1=Course('python全栈开发','6mons',20000)
course_obj2=Course('linux运维','5mons',18000)
# 2、查看课程的详细信息
# course_obj1.tell_info()
# course_obj2.tell_info()
# 3、为班级关联课程对象
class_obj1.related_course(course_obj1)
class_obj2.related_course(course_obj2)
class_obj3.related_course(course_obj1)
# class_obj1.tell_course()
# class_obj2.tell_course()
# class_obj3.tell_course()
school_obj1.tell_class()
school_obj2.tell_class()
自己写
# python学习28——课后练习
# 1、练习上课作业讲解的面向对象代码,明天默写
# 2、基于上课作业讲解的面向对象代码,扩写Student类
# 3、加入序列化与反序列化操作
# 4、对象之间的关联采用id号
# 5、可以通过id找到对应的文件,然后从文件中反序列化出执行的学校、班级、课程、学生对象
import uuid
import pickle
class School:
schoolname='南昌大学'
def __init__(self,nickname,daar):
self.uuid=uuid.uuid4()
self.nickname=nickname
self.daar=daar
self.classes=[]
def add_class(self,class_obj):
self.classes.append(class_obj)
def school_info(self):
print(self.nickname.center(60,'='))
for calss in self.classes:
calss.classinfo()
def save(self):
with open(f'{self.uuid}.plk',mode='ab')as f:
pickle.dump(self.classes,f)
class Class:
def __init__(self,name):
self.uuid=uuid.uuid4()
self.name=name
self.course=None #课程是创建好班级之后创建的 所以先定义一个空的后面开设后面添加
def add_course(self,course_obj):
self.course=course_obj
def classinfo(self):
print(f'班级名称:{self.name}',end='')
self.course.courseinfo()
school_obj1=School('南昌大学鄱阳湖校区','共青城')
school_obj2=School('南昌大学抚州医学院','抚州')
class_obj1=Class('计算机网络2班')
class_obj2=Class('计算机网络1班')
class Course:
def __init__(self,name,week,money):
self.course_name=name
self.week=week
self.money=money
def courseinfo(self):
print(f'课程:{self.course_name}周期:{self.week}金额:{self.money}')
course_obj1=Course('python',"5个月",'2万')
course_obj2=Course('linux',"5个月",'1万8')
class_obj1.add_course(course_obj1)
class_obj2.add_course(course_obj2)
school_obj1.add_class(class_obj1)
school_obj2.add_class(class_obj2)
school_obj1.school_info()
school_obj2.school_info()
school_obj1.save()
school_obj2.save() # 保存数据 操作