day26-作業-繼承

sailan

# 作业一:自己试验一下菱形问题下的属性查找顺序


class A:
    def a1(self):
        print('a1')


class B(A):
    def a1(self):
        print('b1')


class C(A):
    def a1(self):
        print('c1')


class D(A):
    def a1(self):
        print('d1')


class E(B, C, D):
    pass


obj = E()

obj.a1()
print(E.mro())
#  查找順序 [<class '__main__.E'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.D'>, <class '__main__.A'>, <class 'ob

在这里插入图片描述

# 作业二:在实现下述代码的基础上,引入
#    1、引入属性访问控制+property
#    2、引入继承与派生的概念来减少代码冗余
        注意:要满足什么"是"什么的关系,不满足"是"的关系不要去继承
class OldBoy:
    school = 'old_boy'

    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def check_stu_info(self):
        print(f'{self.school},{self.name},{self.gender}')


class Student(OldBoy):

    def __init__(self, name, age, gender, stu_id):
        OldBoy.__init__(self, name, age, gender)
        self.__stu_id = stu_id

    @property
    def stu_id(self):
        return self.__stu_id

    def set_age(self, x):
        if type(x) is not int:
            print('請輸入數字')
            return
        self.age = x


class Teacher(OldBoy):

    def __init__(self, name, age, gender, lv):
        OldBoy.__init__(self, name, age, gender)
        self.lv = lv


stu1 = Student('sailan', 20, 'male', 9527)
tea1 = Teacher('egon', 84, 'unknown', 1)
# 
# 选课系统项目中涉及到诸多数据与功能,要求引入面向对象的思想对其进行高度整合
# # 1、学校数据与功能整合
# # 2、课程数据与功能进行整合
# # 3、学生数据与功能进行整合
# # 4、讲师数据与功能进行整合
# # 5、班级数据与功能进行整合
# ps:不会写的同学,可以先用普通的方式,先把数据与功能都给写好,再考虑基于面向对象的思想进行整合
# 
# 数据部分:
#      校区的名字:如"老男孩上海校区"
#      校区的地址:如"上海虹桥"
# 
#      班级名字
#      班级所在校区
# 
#      学生的学校
#      学生的姓名
#      学生的年龄
#      学号
#      学生的性别
# 
#      课程名字
#      课程周期
#      课程价格
# 
#      老师的名字
#      老师的年龄
#      老师的薪资
#      老师的等级
# 
# 
# 功能部分:
#      校区创建完毕后,可以为每个校区创建班级
# 
#      班级创建完毕后,可以为每个班级创建课程
# 
#      学生创建完毕后,学生可以选择班级
# 
#      老师创建完毕后,可以为学生打分
# 
# 

猜你喜欢

转载自blog.csdn.net/msmso/article/details/107844971