面向对象作业 学生等有待添加

讲解
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() # 保存数据 操作

 

posted @ 2021-03-30 21:55  欧阳锦涛  阅读(31)  评论(0)    收藏  举报
TOP 底部