返回顶部
首页 > 资讯 > 后端开发 > Python >继承和多态
  • 539
分享到

继承和多态

多态 2023-01-31 00:01:47 539人浏览 安东尼

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

摘要

在OOP程序设计中,当定义一个class的时候,可从某个现有的class继承 新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class) 格式:   class

在OOP程序设计中,当定义一个class的时候,可从某个现有的class继承
新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)
格式:

  class 子类名(父类名):
    pass

 

使用示例

class Animal(object):
    def run(self):
        print('Animal is running...')
    
class Dog(Animal):
    pass
    
class Dog1(Animal):
    def run(self):
        print('Dog is running...')
        
def run_twice(animal):  
    animal.run()  
    animal.run()
        
dog = Dog()
dog.run()    #输出:Animal is running...

dog1 = Dog1()
dog1.run()    #输出:Dog is running...,执行子类自己的方法

run_twice(Animal())
#输出:Animal is running...
#输出:Animal is running...

run_twice(Dog1())
#输出:Dog is running...
#输出:Dog is running...

#新追加一个子类型Tortoise,然后调用run_twice函数,依然可以运行
class Tortoise(Animal):   
    def run(self):
        print('Tortoise is running slowly...')    
        
run_twice(Tortoise())   #调用run_twice函数,依然可以运行,确保传入的对象有run()方法即可
#输出:Tortoise is running slowly...
#输出:Tortoise is running slowly...

 

 

数据类型判断
  定义一个class实际上就是定义一种数据类型,该数据类型和python自带的数据类型,比如str、list、dict完全一样
  判断一个变量是否是某个类型可以用isinstance()判断
  对于isinstance(a, A),则
    如果a是A类对象,返回true
    如果a是A类子类对象,返回true
    其他都返回false

 

关于继承
  1) 继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写
   子类通过继承获得了所有父类的方法(包括__init__方法,如果父类的该方法有参数,则子类创建实例时也要传参数)
  2) 当子类和父类都存在相同的方法时,子类覆盖了父类的该方法,运行时,总是会调用子类方法,这就是就是多态
  3) 继承还可以一级一级地继承下来,就好比从爷爷到爸爸、再到儿子这样的关系
    而任何类,最终都可以追溯到根类object,这些继承关系看上去就像一颗倒着的树


关于多态
  调用方只管调用,不管细节,而当新增一种子类时,只要确保方法编写正确,不用管原来的代码是如何调用的
  说白了,就是不管怎么追加子类,也不需要修改原来的代码
  这就是著名的"开闭"原则:
    对扩展开放:允许子类重写方法函数
    对修改封闭:不重写,直接继承父类方法函数

 

静态语言和动态语言
  如果一个方法,要传入的参数是A类对象,方法内部需要调用该参数的run()方法,则:
    对于Java这样的动态语言,则一定要传入A类或者其子类对象,否则将无法调用方法
    对于Python这样的动态语言,则不一定要传入A类或其子类对象,只需保证传入的对象有一个run()方法即可

  这就是动态语言的"鸭子类型",它并不要求严格的继承体系,一个对象只要"看起来像鸭子,走起路来像鸭子",那它就可以被看做是鸭子

  关于file-like object
    Python的"file-like object"就是一种鸭子类型
    真正的文件对象都有一个read()方法,但许多对象,只要有read()方法,都被视为"file-like object"
    许多函数接收的参数就是"file-like object",不一定要传入真正的文件对象,完全可以传入任何实现了read()方法的对象

--结束END--

本文标题: 继承和多态

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

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

猜你喜欢
  • 继承和多态
    在OOP程序设计中,当定义一个class的时候,可从某个现有的class继承 新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class) 格式:   class...
    99+
    2023-01-31
    多态
  • 解析JavaSE的继承和多态
    目录1. 继承1. 子类继承了父类,获得父类的全部Field和方法。2. 子类继承了父类,额外增加新的Field和方法3. 子类继承了父类,重写父类中的方法4. super限定,在子...
    99+
    2024-04-02
  • Python中的继承和多态是什么
    这篇文章主要讲解了“Python中的继承和多态是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的继承和多态是什么”吧!一、继承的介绍继承是一种创建新的类的方式,新创建的叫子...
    99+
    2023-06-15
  • python中的继承和多态怎么用
    本篇内容介绍了“python中的继承和多态怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、继承的介绍继承是一种创建新的类的方式,新创...
    99+
    2023-06-28
  • python3:面向对象(多态和继承、方
    1、多态 同一个方法在不同的类中最终呈现出不同的效果,即为多态。 class Triangle: def __init__(self,width,height): self.width = width ...
    99+
    2023-01-31
    面向对象 多态
  • Java初学者入门之继承和多态
    前言 首先我们如果要使用Java中存在的包,可以程序中使用import语句导入包。包说通俗点就是一个 文件夹,为了方便管理。 在程序中声明包的语法: package <包名&...
    99+
    2024-04-02
  • Python的类、继承和多态简单介绍
    这篇文章主要讲解了“Python的类、继承和多态简单介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的类、继承和多态简单介绍”吧!类的定义假如要定义一个类 Point,表示二维...
    99+
    2023-06-17
  • Java中继承和多态的示例分析
    这篇文章给大家分享的是有关Java中继承和多态的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言首先我们如果要使用Java中存在的包,可以程序中使用import语句导入包。包说通俗点就是一个文件夹,为了...
    99+
    2023-06-20
  • C++关于指针,继承和多态介绍
    目录指针指针和继承指针、继承和多态指针 我们在书本上学到的指针基本上都是:首先,指针是一个变量;其次,这个变量存储的值是一个地址。这个是对指针的一个基本理解,最近在编程中发现了一些新...
    99+
    2024-04-02
  • python 继承与多重继承
    当然,如果不支持python继承,语言特性就不值得称为“类”。派生类定义的语法如下所示: <statement-1> . . . <statement-N> 名称 BaseC...
    99+
    2023-01-31
    python
  • Java初学之继承与多态
    目录在程序中声明包的语法:Java继承语法格式:什么是重写呢?:多态应用:引用变量的强制类型转换instanceof 运算符总结首先我们如果要使用Java中存在的包,可以程序中使用i...
    99+
    2024-04-02
  • JAVA回顾:封装,继承,多态
    目录知识点回顾封装继承super注意点:Vs this:前提:构造方法多态总结知识点回顾 封装 封装(有时称为数据隐藏)是与对象有关的一个重要概念。从形式上来看,封装不过是将数据和...
    99+
    2024-04-02
  • Python类中的单继承和多继承用法
    本篇内容主要讲解“Python类中的单继承和多继承用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python类中的单继承和多继承用法”吧!前言Python面向对象编程语言,有List、Str...
    99+
    2023-06-02
  • C++多继承(多重继承)的实现
    在前面的例子中,派生类都只有一个基类,称为单继承(Single Inheritance)。除此之外,C++也支持多继承(Multiple Inheritance),即一个派生类可以有...
    99+
    2023-05-16
    C++多继承 C++多重继承
  • 怎么在python中定义单继承和多继承
    本篇文章为大家展示了怎么在python中定义单继承和多继承,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、lon...
    99+
    2023-06-14
  • python学习之【继承、封装、多态】
    #来评选你心中的TOP1编程语言# 前言 距离上篇文章 python学习之【类和对象】已有三个星期之久,这篇文章介绍 面向对象的三大特征——封装,继承,多态。 对于编程初学者来说,学习python应...
    99+
    2023-08-31
    python 学习 开发语言
  • 面向对象封装、继承、多态
    一、面向对象封装   01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装...
    99+
    2023-01-31
    面向对象 多态
  • Python编程-封装,继承与多态
    目录一、类的封装1、案例演示2、案例分析3、解决方案1、封装的定义2、封装的实现3、案例演示一、类的封装 为什么需要封装: Python是面向对象的编程语言,因为面向对象中所有的实体...
    99+
    2024-04-02
  • C++ 虚拟函数与继承:理解多态继承中的奥秘
    虚拟函数和继承在面向对象编程中实现多态性:声明虚拟函数允许派生类重写基类方法,并根据对象的运行时类型调用。继承建立类层次,派生类可访问和扩展基类数据和方法。多态继承允许派生类从多个基类继...
    99+
    2024-04-28
    c++ 多态
  • 多重继承
      继承是面向对象编程的一个重要的方式,通过继承,子类就可以扩展父类的功能 由于Python允许使用多重继承,因此,MixIn就是一种常见的设计 只允许单一继承的语言(如Java)不能使用MixIn的设计 通常的继承关系设计如下:   ...
    99+
    2023-01-31
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作