欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2020Python作业——类与对象2+封装

程序员文章站 2022-03-25 18:08:08
@2020-4-8 1、练习上课作业讲解的面向对象代码2、基于上课作业讲解的面向对象代码,扩写Student类3、加入序列化与反序列化操作4、对象之间的关联采用id号5、可以通过id找到对应的文件,然后从文件中反序列化出执行的学校、班级、课程、学生对象 1、练习上课作业讲解的面向对象代码2、基于上课 ......

 

@2020-4-8

1、练习上课作业讲解的面向对象代码
2、基于上课作业讲解的面向对象代码,扩写student类
3、加入序列化与反序列化操作
4、对象之间的关联采用id号
5、可以通过id找到对应的文件,然后从文件中反序列化出执行的学校、班级、课程、学生对象

 

1、练习上课作业讲解的面向对象代码
2、基于上课作业讲解的面向对象代码,扩写student类 

# 一、学校---# 校区创建完毕后,可以为每个校区创建班级
# 定义学校类
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()

# 实例化学校类
school_obj1=school('老男孩魔都校区','上海')
school_obj2=school('老男孩帝都校区','北京')


# 二、班级---#   班级创建完毕后,可以为每个班级创建课程
# 定义班级类
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() # 打印课程的详细信息

    # def related_student(self,student_obj):
    #     self.student = student_obj

    def tell_class(self):
        print('%s'%self.name)
        self.tell_course()

# 实例化班级
# 1、创建班级
class_obj1 = class('脱产14期')
class_obj2 = class('脱产15期')
class_obj3 = class('脱产29期')

# 4、为学校开设班级(为【学校】关联【班级】)
# 上海校区开了:脱产14期,上海校区开了脱产15期
school_obj1.related_class(class_obj1)
school_obj1.related_class(class_obj2)

# 北京校区开了:脱产29期
school_obj2.related_class(class_obj3)

# 三、课程类
# 定义课程类
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)


# 3、为【班级】关联【课程对象】
class_obj1.related_course(course_obj1)
class_obj2.related_course(course_obj2)
class_obj3.related_course(course_obj1)


# 【查询一】
# 查看每个校区的每个班级的课程信息(先是为【学校】关联【班级】,再为【班级】关联【课程】)
# tell_class(tell_course())--- tell_course(tell_info())---tell_info(课程信息)
# school_obj1.tell_class()
# school_obj2.tell_class()

# 输出结果:
# ==========================老男孩魔都校区===========================
# 脱产14期 <课程名:python全栈开发 周期:6mons 价钱:20000>
# 脱产15期 <课程名:linux运维 周期:5mons 价钱:18000>
# ==========================老男孩帝都校区===========================
# 脱产29期 <课程名:python全栈开发 周期:6mons 价钱:20000>


# 四、学生类--#   学生创建完毕后,学生可以选择班级
# 定义学生类
class student:
    def __init__(self,s_school,s_name,s_age,s_number,s_gender):
        self.stu_school = s_school
        self.stu_name = s_name
        self.stu_age = s_age
        self.stu_number = s_number
        self.stu_gender = s_gender
    # def choose_class(self,class_obj):   # 学生创建完毕后,学生可以选择班级
    #     self.classes= class_obj

    # 为【学生】关联【学校】
    def related_school(self,school_obj):
        self.stu_school= school_obj

    # 为【学生】关联【班级】
    def related_class(self,class_obj):
        self.stu_class= class_obj

    def tell_stu_message(self):
        print(('学生 %s 2020年档案表' %(self.stu_name)).center(60, '='))
        print('<学校:%s 姓名:%s 年龄:%s 学号:%s 性别:%s>' %(self.stu_school,self.stu_name,self.stu_age,self.stu_number,self.stu_gender))
        # self.stu_class.tell_class()
        self.stu_class.tell_course()

 # 实例化学生类
# 1、创建学生
stu_obj1 = student('老男孩魔都校区','cc',18,2020001,'female')
stu_obj2 = student('老男孩帝都校区','mili',19,2020007,'male')
stu_obj3 = student('老男孩魔都校区','mela',20,2020009,'male')


# 2、为【学生】关联【班级】
stu_obj1.related_class(class_obj1)
stu_obj2.related_class(class_obj2)
stu_obj3.related_class(class_obj3)

# 【查询二】查询每个学生的学校,班级,课程信息
stu_obj1.tell_stu_message()
stu_obj2.tell_stu_message()
stu_obj3.tell_stu_message()

# 输出结果:
# =======================学生 cc 2020年档案表=======================
# <学校:老男孩魔都校区 姓名:cc 年龄:18 学号:2020001 性别:female>
# 脱产14期 <课程名:python全栈开发 周期:6mons 价钱:20000>
# ======================学生 mili 2020年档案表======================
# <学校:老男孩帝都校区 姓名:mili 年龄:19 学号:2020007 性别:male>
# 脱产15期 <课程名:linux运维 周期:5mons 价钱:18000>
# ======================学生 mela 2020年档案表======================
# <学校:老男孩魔都校区 姓名:mela 年龄:20 学号:2020009 性别:male>
# 脱产29期 <课程名:python全栈开发 周期:6mons 价钱:20000>

3、加入序列化与反序列化操作
4、对象之间的关联采用id号
5、可以通过id找到对应的文件,然后从文件中反序列化出执行的学校、班级、课程、学生对象