Python(三十一)python类class继承与多态

简介: Python是一门面向对象语言面向对象的三大特征:封装、继承、多态我们这里来看一下python 类的继承通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。一:类的继承1 :继承语法arduino复制代码class 派生类名(基类名) ... 通常我们定义的类没有指定继承对象都是继承自object类,另外,python是支持多继承的。下边我们使用代码来演示一下python的继承:我们定义一个person类,其中有name、age两个属性,getInfo方法,为父类。我们定义一个school类,其中getSchoolInfo方法,为父类。定义一

Python是一门面向对象语言

面向对象的三大特征:封装、继承、多态

我们这里来看一下python 类的继承

通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。

一:类的继承

1:继承语法

arduino

复制代码

class 派生类名(基类名)
    ...

 

通常我们定义的类没有指定继承对象都是继承自object类,另外,python是支持多继承的。

下边我们使用代码来演示一下python的继承:

我们定义一个person类,其中有name、age两个属性,getInfo方法,为父类。

我们定义一个school类,其中getSchoolInfo方法,为父类。

定义一个teacher类,继承person、school类,其中有name、age、teacherNumber

三个属性

定义一个student类,继承person、school类。其中有name、age、studentNumber三个属性

上代码:

python

复制代码

class Person(object):
    """
    person类
    """
    # 姓名
    name = ''
    # 年龄
    age = ''
    # 构造函数
    def __init__(self, name, age):
        self.name = name
        self.age = age
    # 获取信息
    def getInfo(self):
        li = {'name' : self.name, 'age' : self.age}
        print('姓名为:', self.name, "年龄为:", self.age)
class School(object):
    """
    school类
    """
    type = ''
    # 获取信息
    def getSchoolInfo(self):
        print("我在时间里的大学")
class Teacher(Person, School):
    """
    教师类,继承person类
    """
    # 姓名
    name = ''
    # 年龄
    age = ''
    # 教工号
    teacherNumber = ''
    # 构造函数
    def __init__(self, name, age, teacherNumber):
        self.name = name
        self.age = age
        self.teacherNumber = teacherNumber
class Student(Person, School):
    """
    教师类,继承person类
    """
    # 姓名
    name = ''
    # 年龄
    age = ''
    # 学生号
    studentNumber = ''
    # 构造函数
    def __init__(self, name, age, studentNumber):
        self.name = name
        self.age = age
        self.studentNumber = studentNumber

调用:

scss

复制代码

S = Student('张三', 15, '20210101')
S.getInfo()
S.getSchoolInfo()
T = Teacher('李四', 35, 5)
T.getInfo()
S.getSchoolInfo()

输出:

复制代码

姓名为: 张三 年龄为: 15
我在时间里的大学
姓名为: 李四 年龄为: 35
我在时间里的大学

 

上边的代码我们演示了python基本的继承与多继承,子类分别调用了父类person中的getInfo方法,School中的getSchoolInfo方法

但是,因为父类person中的getinfo方法只能打印名字和年龄。

但是学生还有学号,教师还有工龄需要输出,那么我们就需要用到下边的方法重写。

二:方法重写

Python中类的方法的重写比较简单

直接在子类中声明与父类中的方法名相同的方法即可。

使用上边的代码,person类与school类中的代码不变

python

复制代码

class Teacher(Person, School):
    """
    教师类,继承person类
    """
    # 姓名
    name = ''
    # 年龄
    age = ''
    # 教工号
    teacherNumber = ''
    # 构造函数
    def __init__(self, name, age, teacherNumber):
        self.name = name
        self.age = age
        self.teacherNumber = teacherNumber
    # 获取信息
    def getInfo(self):
        li = {'name': self.name, 'age': self.age}
        print('姓名为:', self.name, "年龄为:", self.age, "教工号为:", self.teacherNumber)
class Student(Person, School):
    """
    教师类,继承person类
    """
    # 姓名
    name = ''
    # 年龄
    age = ''
    # 学生号
    studentNumber = ''
    # 构造函数
    def __init__(self, name, age, studentNumber):
        self.name = name
        self.age = age
        self.studentNumber = studentNumber
    # 获取信息
    def getInfo(self):
        li = {'name': self.name, 'age': self.age}
        print('姓名为:', self.name, "年龄为:", self.age, "学号为:", self.studentNumber)
S = Student('张三', 15, '20210101')
S.getInfo()
S.getSchoolInfo()
T = Teacher('李四', 35, 5)
T.getInfo()
S.getSchoolInfo()

输出:

复制代码

姓名为: 张三 年龄为: 15 学号为: 20210101
我在时间里的大学
姓名为: 李四 年龄为: 35 教工号为: 5
我在时间里的大学

三:类的多态

Python是一门动态语言

静态语言与动态语言的区别:

静态语言和动态语言关于多态的区别  。静态语言实现多态的三个必要条件

1.      继承

2.      方法重写

3.      父类引用指向子类对象

动态语言的多态崇尚“鸭子类型"当看到一只鸟走起来像鸭子、游泳起来像鸭子、  收起来也像鸭子,那么这只鸟就可以被称为鸭子。在鸭子类型中,不需要关心  对象是什么类型,到底是不是鸭子,只关心对象的行为。

下边我们使用一段代码来演示一下python的多态

kotlin

复制代码

# 父类 动物
class Animal:
    def eat(self):
        print("动物吃东西!")
# 子类 狗
class Dog(Animal):
    def eat(self):
        print("吃肉!")
# 子类 猴
class Monkey(Animal):
    def eat(self):
        print("吃香蕉!")
# 父类 人
class Person(object):
    def eat(self):
        print("吃五谷杂粮!")
# 定义一个函数 参数是一个对象
def fun(obj):
    obj.eat()
fun(Dog())
fun(Monkey())
fun(Person())

输出:

复制代码

吃肉!
吃香蕉!
吃五谷杂粮!

 

上边的代码我们定义了一个animal父类,定义了一个Dog,Monkey子类继承animal

我们又定义了一个person类

相同的是,这个类中都是有eat方法的

我们有定义了一个函数,传入参数是一个对象,函数内部调用了对象中的eat方法

这个就对上了我们上边说的鸭子类型。

有好的建议,请在下方输入你的评论。

目录
相关文章
|
3月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
8月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
215 11
|
11月前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
527 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
9月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
203 1
|
12月前
|
设计模式 Python
简单分享下python多态
多态是面向对象编程中至关重要的特性,通过继承和方法重写,可以实现代码复用和灵活扩展。Python的鸭子类型进一步增强了多态的灵活性,使得代码更具适应性。通过理解和应用多态,可以写出更为简洁、优雅和高效的代码。
222 9
|
12月前
|
算法 Python
Python多继承时子类如何调用指定父类
通过本文的介绍,希望您能够深入理解Python多继承时子类如何调用指定父类的方法,并在实际项目中灵活运用这些技巧,编写出高效且易维护的代码。
222 11
|
12月前
|
算法 Python
Python多继承时子类如何调用指定父类
通过本文的介绍,希望您能够深入理解Python多继承时子类如何调用指定父类的方法,并在实际项目中灵活运用这些技巧,编写出高效且易维护的代码。
169 1
|
12月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
数据库 Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(下)
## 封装,继承和多态 ## 1.封装 1、满足把内容封装到某个地方,另一个地方去调用封装的内容 2、使用初始化构造方法,或者使用self获取封装的内容 ## 2.继承 子类继承父类的属性和内容
242 0
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
## 封装,继承和多态 ## 1.封装 1、满足把内容封装到某个地方,另一个地方去调用封装的内容 2、使用初始化构造方法,或者使用self获取封装的内容 ## 2.继承 子类继承父类的属性和内容
224 0

推荐镜像

更多