Skip to main content

Command Palette

Search for a command to run...

Python 阶段编程练习(十五)

Published
2 min read
Python 阶段编程练习(十五)

代码练习

自定义两个类Person和Student,且Student继承自Person。Person类主要描述人的姓名和性别两大基本特征。Student类除了保持父类的基本属性之外还具有分数、主修两个公有属以及一个私有属性(学号)。请根据上述的基本说明,对stu和stu_2两个对象的信息进行综合展示。

效果图如下:

1

任务

  1. 自定义Person类,并重写其构造(初始化)方法init( ),将name和gender参数赋值给实例对象的属性
  2. 自定义实例方法speak( ),功能:打印“hello ! 我是xxx”。relation( )方法主要是占位作用,无其他实质性功能
  3. 自定义Student类,继承自Person类,并重写其构造(初始化)方法init( ),name、gender参数通过调用父类的构造函数进行赋值,score、major及stu_num通过子类重写的 init( )进行赋值,设置stu_num的初始值为'2018014002'。
  4. 自定义实例方法speak( ),功能:打印'我的学号为xxxxxxxxxx,很高兴认识大家';
  5. 自定义实例方法identify_stu( ),功能:判断Student对象的学号。若学号为2018014002,则打印‘我的分组已经完成’,反之则打印‘请稍后,马上为你自动分组’;
  6. 自定义实例方法set_num( new_num),功能:将学号重写设置为new_num;
  7. 自定义实例方法relation( ),功能:判断Student是否为Person的子类。若成立,则打印‘我的父类是Person’,反之则打印‘父类正在查询中······’
  8. 初始化实例对象stu和stu_2,并根据上述效果图调用对应方法

任务提示

  1. Person类中的实例方法relation( )为占位功能时,其方法体可用pass语句代替
  2. 使用issubclass()是判断是否是子类,第一个参数传入的是子类类名,第二个参数传入的是父类类名。
  3. 略......

初始代码

class Person(object):
    # 重写实例对象的构造(初始化)方法

    # 自定义实例方法,格式化打印实例属性name的值

    # 自定义实例方法,占位作用

class Student(Person):

    # 重写实例对象的构造(初始化)方法,并调用父类实例属性的赋值

    # 自定义实例方法,格式化打印实例属性stu_num的

    # 自定义实例方法,判断学号是否为既定值,并根据进行分类打印

    # 自定义实例方法,设置实例对象的学号为传入的值

    # 自定义实例方法,判断该类是否为Person类的子类
if __name__ == '__main__':
    stu = Student('小明', '男', 90, '数学')
    # 调用speak方法 打印stu对应的值

    # 调用实例方法 鉴别学号是否为指定值

    # 调用实例方法 鉴别实例对象所属的类的父类是否为

    print("******************")
    stu_2 = Student('小红', '女', 89, '英语')
    # 调用实例方法 设置stu_2的学号为'2018040625'

    # 调用实例方法 打印stu_2对应的值

    # 调用实例方法 鉴别学号是否为指定值

代码提交区

class Person(object):
    # 重写实例对象的构造(初始化)方法
    def __init__(self, name, sex):
        self.name = name
        self.sex = sex

    # 自定义实例方法,格式化打印实例属性name的值
    def speak(self):
        print('hello i am %s' % self.name)

    # 自定义实例方法,占位作用
    def sex(self):
        pass


class Student(Person):
    # 重写实例对象的构造(初始化)方法,并调用父类实例属性的赋值
    def __init__(self, name, sex, score, major):
        super().__init__(name, sex)
        self.score = score
        self.major = major
        self._stu_num = 20211103

    # 自定义实例方法,格式化打印实例属性stu_num的
    def speak(self):
        print('我的学号是%s,很高兴见到大家' % self._stu_num)

    # 自定义实例方法,判断学号是否为既定值,并根据进行分类打印
    def identify_stu(self):
        if(self._stu_num == 20211103):
            print('我的分组已完成')
        else:
            print('请稍后,马上为你自动分组')

    # 自定义实例方法,设置实例对象的学号为传入的值
    def set_num(self, new_num):
        self._stu_num = new_num

    # 自定义实例方法,判断该类是否为Person类的子类
    def relation(self):
        if issubclass(Student, Person):
            print('我的父类是Person')
        else:
            print('父类正在查询中.....')


if __name__ == '__main__':
    stu = Student('小明', '男', 90, '数学')
    # 调用speak方法 打印stu对应的值
    stu.speak()
    # 调用实例方法 鉴别学号是否为指定值
    stu.identify_stu()
    # 调用实例方法 鉴别实例对象所属的类的父类是否为
    stu.relation()
    print("******************")
    stu_2 = Student('小红', '女', 89, '英语')
    # 调用实例方法 设置stu_2的学号为'2018040625'
    stu_2._stu_num = 20211103
    # 调用实例方法 打印stu_2对应的值
    stu_2.speak()
    # 调用实例方法 鉴别学号是否为指定值
    stu_2.identify_stu()
2 views

More from this blog

MySQL | 表的内连接

数据操作语言:表连接查询(一) 从多张表中提取数据 从多张表提取数据,必须指定关联的条件。如果不定义关联条件就会出现无条件连接,两张表的数据会交叉连接,产生 笛卡尔积。 规定了连接条件的表连接语句,就不会出现笛卡尔积。 # 查询每名员工的部门信息 SELECT e.empno,e.ename,d.dname FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno; 表连接的分类 表连接分为两种:内连接 和 外连接 内连接是结果集中只保留符合...

May 16, 20221 min read13
MySQL | 表的内连接

MySQL | 分组查询的应用

数据操作语言:分组查询 为什么要分组? 默认情况下汇总函数是对全表范围内的数据做统计 GROUP BY 子句的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对每个小区域分别进行数据汇总处理 SELECT deptno,AVG(sal) FROM t_emp GROUP BY deptno; SELECT deptno,ROUND(AVG(sal)) FROM t_emp GROUP BY deptno; -- ROUND 取整 逐级分组 数据库支持多列分组条件,执行的时候...

Apr 27, 20221 min read10
MySQL | 分组查询的应用

MySQL | 聚合函数的使用

数据操作语言:聚合函数 什么是聚合函数 聚合函数在数据的查询分析中,应用十分广泛。聚合函数可以对 数据求和、求 最大值 和 最小值 、求 平均值 等等。 求公司员工的评价月收入是多少? SELECT AVG(sal+IFNULL(comm,0)) FROM t_emp; SELECT AVG(sal+IFNULL(comm,0)) AS avg FROM t_emp; SUM 函数 SUM 函数用于求和,只能用户数字类型,字符类型的统计结果为 0 ,日期类型统计结果是毫秒数相加 SE...

Apr 26, 20221 min read8
MySQL | 聚合函数的使用
U

Untitled Publication

173 posts