广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 面向对象之继承实例讲解
  • 146
分享到

python 面向对象之继承实例讲解

面向对象实例python 2023-01-30 21:01:21 146人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

面向对象编程语言具有封装、继承、多态三个基本特征,本文就继承举例详谈比如说学校主要有3大角色:学校,讲师,学员学校可以注册学员,统计有多少学员老师负责讲课学生听课,提问,学习,交学费先定义4个类:class School(obje

面向对象编程语言具有封装、继承、多态三个基本特征,本文就继承举例详谈


比如说学校

主要有3大角色:

学校,讲师,学员


学校可以注册学员,统计有多少学员

老师负责讲课

学生听课,提问,学习,交学费


先定义4个类:

class School(object): #学校
    def __init__(self):
        pass
        
class SchoolMember(object): #学校成员
    def __init__(self):
        pass
        
class Teacher(SchoolMember): #讲师
    def __init__(self):
        pass
        
class Student(SchoolMember): #学生
    def __init__(self):
        pass

再写几个类方法

class School(object): #学校
    def __init__(self):
        pass

    def enroll(self): #注册
        pass

class SchoolMember(object): #学校成员
    def __init__(self):
        pass

    def tell(self): #打印自己个人信息
        pass

class Teacher(SchoolMember): #讲师
    def __init__(self):
        pass

    def tell(self): #重构父类方法,打印自己个人信息
        pass

    def teach(self): #讲课
        pass

class Student(SchoolMember): #学生
    def __init__(self):
        pass

    def tell(self):
       pass

    def pay_tuition(self,amount): #交学费
        pass

完善类方法

class School(object): #学校
    def __init__(self,name,addr):
        self.name = name #姓名
        self.addr = addr #地址
        self.students = [] #学生列表
        self.teachers = [] #讲师列表

    def enroll(self,stu_obj): #注册
        print('为学员%s 办理注册手续'% stu_obj)
        self.students.append(stu_obj)

class SchoolMember(object): #学校成员
    def __init__(self,name,age,sex):
        self.name = name #姓名
        self.age = age #年龄
        self.sex = sex #性别

    def tell(self): #打印自己个人信息
        pass

class Teacher(SchoolMember): #讲师
    def __init__(self,name,age,sex,salary,course):
        super(Teacher,self).__init__(name,age,sex) #引用父类的name,age,sex
        self.salary = salary #工资
        self.course = course #课程

    def tell(self): #重构父类方法,打印自己个人信息
        print('''
        --- info of Teacher:%s ---
        Name:%s
        Age:%s
        Sex:%s
        Salary:%s
        Course:%s
        ''' % (self.name,self.name,self.age,self.sex,self.salary,self.course))

    def teach(self): #讲课
        print("%s is teaching course [%s]" % (self.name,self.course))

class Student(SchoolMember): #学生
    def __init__(self,name,age,sex,stu_id,grade):
        super(Student,self).__init__(name,age,sex) #引用父类的name,age,sex
        self.stu_id = stu_id #学生id
        self.grade = grade #班级

    def tell(self):
        print('''
        --- info of Student:%s ---
        Name:%s
        Age:%s
        Sex:%s
        Stu_id:%s
        Grade:%s
        ''' % (self.name,self.name,self.age,self.sex,self.stu_id,self.grade))

    def pay_tuition(self,amount): #交学费
        print("%s has paid tution for $%s" % (self.name,amount))

实例化对象

school = School("老男孩IT","沙河") #实例化学校

t1 = Teacher("Oldboy",56,"M",2000000,"linux") #实例化一个老师
t2 = Teacher("Alex",22,"M",3000,"pythondevops")

s1 = Student("ChenRonghua",36,"M",1001,"PythonDevOps") #实例化一个学生
s2 = Student("Xuliangwei",19,"M",1002,"Linux")

执行类方法

t1.tell() #打印老师个人信息
s1.tell() #打印学生个人信息

执行输出:

        --- info of Teacher:Oldboy ---

        Name:Oldboy

        Age:56

        Sex:M

        Salary:2000000

        Course:Linux

        


        --- info of Student:ChenRonghua ---

        Name:ChenRonghua

        Age:36

        Sex:M

        Stu_id:1001

        Grade:PythonDevOps



雇佣一个老师,注册一个学生,完整代码如下:

#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'

class School(object): #学校
    def __init__(self,name,addr):
        self.name = name #姓名
        self.addr = addr #地址
        self.students = [] #学生列表
        self.stalls = [] #员工列表

    def enroll(self,stu_obj): #注册
        print('为学员%s 办理注册手续'% stu_obj.name)
        self.students.append(stu_obj)

    def hire(self,stall_obj): #雇用老师
        self.stalls.append(stall_obj) #添加员工
        print('雇佣新员工 %s' % stall_obj.name)

class SchoolMember(object): #学校成员
    def __init__(self,name,age,sex):
        self.name = name #姓名
        self.age = age #年龄
        self.sex = sex #性别

    def tell(self): #打印自己个人信息
        pass

class Teacher(SchoolMember): #讲师
    def __init__(self,name,age,sex,salary,course):
        super(Teacher,self).__init__(name,age,sex) #引用父类的name,age,sex
        self.salary = salary #工资
        self.course = course #课程

    def tell(self): #重构父类方法,打印自己个人信息
        print('''
        --- info of Teacher:%s ---
        Name:%s
        Age:%s
        Sex:%s
        Salary:%s
        Course:%s
        ''' % (self.name,self.name,self.age,self.sex,self.salary,self.course))

    def teach(self): #讲课
        print("%s is teaching course [%s]" % (self.name,self.course))

class Student(SchoolMember): #学生
    def __init__(self,name,age,sex,stu_id,grade):
        super(Student,self).__init__(name,age,sex) #引用父类的name,age,sex
        self.stu_id = stu_id #学生id
        self.grade = grade #班级

    def tell(self):
        print('''
        --- info of Student:%s ---
        Name:%s
        Age:%s
        Sex:%s
        Stu_id:%s
        Grade:%s
        ''' % (self.name,self.name,self.age,self.sex,self.stu_id,self.grade))

    def pay_tuition(self,amount): #交学费
        print("%s has paid tution for $%s" % (self.name,amount))

school = School("老男孩IT","沙河") #实例化学校

t1 = Teacher("Oldboy",56,"M",2000000,"Linux") #实例化一个老师
t2 = Teacher("Alex",22,"M",3000,"PythonDevOps")

s1 = Student("ChenRonghua",36,"M",1001,"PythonDevOps") #实例化一个学生
s2 = Student("Xuliangwei",19,"M",1002,"Linux")

t1.tell() #打印老师个人信息
s1.tell() #打印学生个人信息

school.hire(t1) #雇佣一个老师
school.enroll(s1) #注册一个学生

执行输出:


        --- info of Teacher:Oldboy ---

        Name:Oldboy

        Age:56

        Sex:M

        Salary:2000000

        Course:Linux

        


        --- info of Student:ChenRonghua ---

        Name:ChenRonghua

        Age:36

        Sex:M

        Stu_id:1001

        Grade:PythonDevOps

        

雇佣新员工 Oldboy

为学员ChenRonghua 办理注册手续


打印2个列表

print(school.students) #学生列表
print(school.stalls) #员工列表

执行输出:

[<__main__.Student object at 0x000001C7018BD390>]

[<__main__.Teacher object at 0x000001C7018BD320>]

这是2个对象


再注册一个学生,让第一个老师去讲课,最后一行添加

school.enroll(s2) #注册第二个学生
school.stalls[0].teach() #让第一个老师去讲课

执行输出:

Oldboy is teaching course [Linux]


让每个学生都交学费,最后一行添加

for stu in school.students:
    stu.pay_tuition(5000)

执行输出:

ChenRonghua has paid tution for $5000

Xuliangwei has paid tution for $5000



在这个例子中,SchoolMember和Teacher、Student是继承关系

Teacher、Student和School是组合关系,通过某种方式,组合在一起了。

他们之间产生了一些交互

这个例子不难,只要把逻辑理清就可以了。

--结束END--

本文标题: python 面向对象之继承实例讲解

本文链接: https://www.lsjlt.com/news/179032.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 面向对象之继承实例讲解
    面向对象编程语言具有封装、继承、多态三个基本特征,本文就继承举例详谈比如说学校主要有3大角色:学校,讲师,学员学校可以注册学员,统计有多少学员老师负责讲课学生听课,提问,学习,交学费先定义4个类:class School(obje...
    99+
    2023-01-30
    面向对象 实例 python
  • JavaScript面向对象之class继承类案例讲解
    1. 面向对象class继承 在上面的章节中我们看到了JavaScript的对象模型是基于原型实现的,特点是简单,缺点是理解起来比传统的类-实例模型要困难,最大的缺点是继承的实现需要...
    99+
    2022-11-12
  • python 面向对象之继承
    文章目录 前言继承的概念单继承多继承子类重写父类的同名方法和属性子类调用父类同名的方法和属性多层继承私有权限 前言 前面我们已经学习了 python 面向对象的类和对象,那么今天我将为大...
    99+
    2023-09-01
    python 开发语言
  • 举例讲解Python面向对象编程中类的继承
    python创建一个类很简单只需要定义它就可以了. class Cat: pass 就像这样就可以了,通过创建子类我们可以继承他的父类(超类)的方法。这里重新写一下cat class Cat...
    99+
    2022-06-04
    面向对象 Python
  • Python面向对象封装继承和多态示例讲解
    目录1. 封装2. 继承多态的实现面向对象的三大特征:封装,继承,多态 1.封装: 提高程序的安全性 将数据(属性)和行为(方法)包装到类对象中,在方法内部对属性进行对象的...
    99+
    2022-11-12
  • python 面向对象之类的继承
    python中什么是继承:新类不必从头编写新类从现有的类继承,就自动拥有了现有类的所有功能新类只需要编写现有类缺少的新功能继承的好处:复用已有代码自动拥有了现有类的所有功能只需要编写缺少的新功能继承的特点:子类和父类是is关系python继...
    99+
    2023-01-30
    面向对象 python
  • python 面向对象之继承顺序
    先来看一个经典类class A:     def __init__(self):         p...
    99+
    2023-01-30
    面向对象 顺序 python
  • python面向对象之类的继承详解
    目录一、概述 二、类的继承2.1 继承的定义2.2 构造函数的继承 2.3 子类对父类方法的重写三、类继承的事例一、概述  面向对象编程 (OOP) 语言的一个主要功能就是“继承”。...
    99+
    2022-11-12
  • Python面向对象——继承
    #coding:utf-8 """ 术语: 1、在python3中,自定义创建的类都默认继承了python类中名为object的类 2、object类提供的方法,是双下划线开头的,是为了提供给python内部使用 3、被继承的类叫做超类,...
    99+
    2023-01-31
    面向对象 Python
  • Python面向对象编程之类的继承
    目录1、对继承的理解2、类继承的构建3、Python中最基础的类4、ython类的重载4.1 属性重载4.2 方法重载5、类的多继承1、对继承的理解 继承(Inheritance) ...
    99+
    2022-11-12
  • Python中关于面向对象中继承的详细讲解
    目录1.继承2.单继承3.多继承4.子类重写父类的同名属性和方法5.子类调用父类同名属性和方法6.多层继承7.调用父类方法super()8.案例1.继承 在程序中,继承描述的是多个类...
    99+
    2022-11-12
  • Python基础面向对象之继承与派生详解
    目录一、面向对象三大特征之继承1、继承的概念2、继承的本质3、继承的实操4、继承后名字查找的顺序5、经典类与新式类二、派生1、派生的概念2、派生的方法一、面向对象三大特征之继承 py...
    99+
    2022-11-11
  • Java全面分析面向对象之继承
    目录继承什么是继承呢?子类访问父类的成员变量子类访问父类非同名成员变量子类访问父类同名成员变量子类访问父类的成员方法子类访问父类的非同名方法子类访问父类的同名方法super关键字su...
    99+
    2022-11-13
  • Java面向对象之继承的概念详解
    目录1. 继承1.1 继承的实现1.2 继承的好处和弊端1.3. Java中继承的特点2. 继承中的成员访问特点2.1 继承中变量的访问特点2.2 super2.3 方法重写2.4 ...
    99+
    2023-05-18
    Java 继承 Java 面向对象
  • JAVA面向对象之继承 super入门解析
    目录1 继承1.1概念1.2 特点1.3 练习:继承入门案例2 super3 继承的用法3.1 练习:super之继承中成员变量使用3.2 练习:super之继承中构造方法的使用4 ...
    99+
    2022-11-13
  • Java面向对象关键字extends继承的深入讲解
    目录一、问题引出二、继承extends2.1继承的用法2.2基本语法2.3继承的好处2.4继承性总结一、 问题引出 面向对象的编程思想使得代码中创建的类更加具体,他们都有各自的属性...
    99+
    2022-11-12
  • Java面向对象之类的继承介绍
    目录继承的作用如果没有继承机制是怎么样的?使用继承机制后的示例?类的继承是什么?子类和父类的继承机制Java单继承Java继承的顶级父类:Object对象的类型转换对象向上转型对象向...
    99+
    2022-11-13
  • 【JavaSE】面向对象编程思想之继承
     【本节目标】 继承 组合 目录 1. 为什么需要继承 2. 继承概念 3. 继承的语法 4. 父类成员访问 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. 子类构造方法 7....
    99+
    2023-09-03
    java 开发语言 学习方法
  • 详析Python面向对象中的继承
    目录一单继承1.继承的基本语法格式如下2.查看类继承情况3.继承中的属性和方法4.初始化函数__init__()和super二多层继承三多重继承一 单继承 类继承作为python的三...
    99+
    2022-11-13
  • Python 面向对象编程的三大特性之继承
    目录Python  面向对象编程的三大特性之继承一、继承1、继承的实际栗子2、继承的好处3、继承的使用场景4、继承有几种?5、Python 中继承的简单语法二、不使用继承、...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作