编写类时,并非总是要从空白开始。如果要编写的类时另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法

原有的类称为父类,而新类被称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

继承语法格式:

class 子类名(父类名):

1.子类的__init__方法

创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。为此,子类的__init__方法在初始化子类属性时,需要先将父类的所有属性赋值

子类中给父类属性赋值的语法格式:

super().__init__(实参变量1,实参变量2,,,,,实参变量n)

比如动物猫Cat这个子类,继承动物Animal这个父类,编写程序如下所示:

注意:

1.创建子类时,父类必须包含在当前文件中,且位于子类前面,可以通过import导入到当前文件。

2.super是一个特殊的函数,帮助Python将父类和子类关联起来。这行代码让Python调用Cat的父类的__init__方法,让Cat类的实例cat包含父类的所有属性。

我们通过子类将name传给父类,然后通过调用父类的eat方法,实现了子类实例对父类方法的调用,验证了此时子类继承了父类的所有属性和方法

2.给子类定义属性和方法

子类继承父类后,可添加区分子类和父类的属性和方法。

比如我们给Cat类添加一个猫特有的属性捉老鼠的数量num,给Animal类添加一个动物共有的属性年龄age,编写程序如下所示:

对于Cat类的特殊化程度没有任何限制。可以根据所需的准确程度添加任意数量的属性和方法。如果一个属性或者方法是任何动物都有的,而不是动物猫特有的,我们就往动物Animal类中添加,是动物猫特有的我们就往猫Cat类中添加。这样动物Animal类有动物的通用属性和方法,猫Cat类有特有的属性和方法,我们只需根据需要调用即可

注意:

子类可以调用父类的属性和方法,但是父类不可调用子类的属性和方法

会提示父类没有子类的方法等错误。

3.重写父类的方法

对于父类的方法,只要它不符合子类的方法逻辑,都可对其进行重写。为此,可在子类定义一个这样的方法,即它与要重写的父类方法同名。这样Python在用子类调用这个方法的时候,就不会去调用父类的同名方法,而是去调用子类的同名方法。

编写程序如下所示:

我们看到我们在子类中重新编写了__str__方法,当子类调用该方法时,是调用子类中的该方法,而不是父类中的该方法。

【python基础】类-继承的更多相关文章

  1. python基础——类和实例

    python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都 ...

  2. Python基础-类

    Python基础-类 @(Python)[python, python基础] 写在前面 如非特别说明,下文均基于Python3 摘要 本文重点讲述如何创建和使用Python类,绑定方法与非绑定方法的区 ...

  3. 二十二. Python基础(22)--继承

    二十二. Python基础(22)--继承 ● 知识框架   ● 继承关系中self的指向 当一个对象调用一个方法时,这个方法的self形参会指向这个对象 class A:     def get(s ...

  4. python基础——类名称空间与对象(实例)名称空间

    python基础--类名称空间与对象(实例)名称空间 1 类名称空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类的良好总属性:数据属性和函数属性 其中类 ...

  5. python基础-类的继承

    继承:承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”.“父类. 继承的过程,就是从一般到特殊的过程.要实现继承,可以通过“继承”(Inheritance)和“组合”(Compositio ...

  6. Python 基础 类的继承

    如果寂静定义了Person类,需要定义新的Student 和Teacher 类时 可以直接从Person 中继承 class Person(Object): def __init__(self,nam ...

  7. Python基础之继承与派生

    一.什么是继承: 继承是一种创建新的类的方式,新建的类可以继承一个或过个父类,原始类成为基类或超类,新建的类则称为派生类 或子类. 其中,继承又分为:单继承和多继承. class parent_cla ...

  8. python基础之继承派生、组合、接口和抽象类

    类的继承与派生 经典类和新式类 在python3中,所有类默认继承object,但凡是继承了object类的子类,以及该子类的子类,都称为新式类(在python3中所有的类都是新式类) 没有继承obj ...

  9. C++基础——类继承中方法重载

    一.前言 在上一篇C++基础博文中讨论了C++最基本的代码重用特性——类继承,派生类可以在继承基类元素的同时,添加新的成员和方法.但是没有考虑一种情况:派生类继承下来的方法的实现细节并不一定适合派生类 ...

  10. python基础-----类和实例

    在python中,首字母大写的名称指的是类,这个类定义中括号的内容是空的. 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板而实例是根据类创建出来的一个个具体 ...

随机推荐

  1. 纯CSS3实现多行文本截断

    纯CSS处理多行文本展开和收起,直接上代码和效果图 1 <html> 2 <header> 3 <style> 4 .wrap { 5 position: rela ...

  2. 如何用java校验SQL语句的合法性?(提供五种解决方案)

    方案一:使用JDBC API中提供的Statement接口的execute()方法 要在Java中校验SQL语句的合法性,可以使用JDBC API中提供的Statement接口的execute()方法 ...

  3. 在k8s安装CICD-devtron

    在k8s安装CICD-devtron 先前条件 <kubernetes(k8s) 存储动态挂载>参考我之前的文档进行部署https://www.oiox.cn/index.php/arch ...

  4. [Linux]常用命令之【cat/echo/iconv/vi/grep/find/head/tail】

    cat cat [选项] [文件].. # 一次显示整个文件或从键盘创建一个文件或将几个文件合并成一个文件 cat -n file1 # 编号文件内容再输出 echo -n 输出后不换行 -e 遇到转 ...

  5. TS 导入导出那些事

    前言 最近用 TypeScript 写 npm 包,各种模块.命名空间.全局定义等等扰得我睡不着觉. 我便苦心研究,总结了几个比较冷门的,国内貌似基本上找不到资料的导入导出用法,顺便在其中又插入一些不 ...

  6. windows安装telnet命令

    1.打开控制面板 2.点击程序和功能 3.点击打开或关闭windows功能 4.等候一分钟左右 5.勾选telnet选项 6.测试telnet 7.如果通的话,弹出telnet窗口,按住"C ...

  7. Docker介绍下载安装、制作镜像及容器、做目录映射、做端口映射

    在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以 ...

  8. Java工作环境的配置与Eclipse的安装

    如果您觉得这篇文章有用,请点个赞呀! Eclipse是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.Eclipse 附带了一个标 ...

  9. 非关系型数据库---Redis安装与基本使用

    一.数据库类型 关系数据库管理系统(RDBMS) 非关系数据库管理系统(NoSQL) 按照预先设置的组织机构,将数据存储在物理介质上(即:硬盘上) 数据之间可以做无关联操作 (例如: 多表查询,嵌套查 ...

  10. Indent----- IndentationError: unexpected indent

    Unexpected indent 错误 注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现.但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个 ...