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

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

继承语法格式:

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. 安装 Metrics server

    安装 Metrics server Metrics Server 是 Kubernetes 内置自动缩放管道的可扩展.高效的容器资源指标来源. Metrics Server 从 Kubelets 收集 ...

  2. python内置模块之ctype

    ctypes --- Python 的外部函数库¶ ctypes 是 Python 的外部函数库.它提供了与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数.可使用该模块以纯 Python ...

  3. day07 字符串和列表

    day07字符串与列表 字符串的内置方法 lower upper startswitch endwhich 格式化输出 format join的用法 replace替换字符串 isdigit判断 字符 ...

  4. 2023 年十大 API 管理趋势

    本文探讨了 API 管理在数字化转型中的重要性,以及 API 管理面临的挑战和发展机遇.文章重点介绍了十大 API 管理发展趋势,包括 API 安全性.API 标准化.云端 API 管理解决方案.低代 ...

  5. Java全栈开发/API

    2023/4/16 记录我学习的网站 前端 vuejs axios异步请求 微信开发者文档 uniapp开发文档 快速参考备忘清单 免费前端接口 读取json vant4UI cubeUI mintU ...

  6. Django框架——手写web框架、wsgiref模块、动静态网页、jinja2模块、主流web框架、Django简介、基本使用、app概念、目录结构、三板斧

    web应用 '''通过浏览器访问的应用程序!!!''' 1.两种模式c/s b/s B/S:browser---------------->server 2.web应用程序的有点 2.1 只需要 ...

  7. Android 通过scheme跳转支付宝实现支付

    原文地址: Android 通过scheme跳转支付宝实现支付 - Stars-One的杂货小窝 需求的来源是支付功能,由于支付宝不允许个人开通具有webhook的支付服务,所以是对接了一个支付系统( ...

  8. 推荐一个基于.Net Framework开发的Windows右键菜单管理工具

    平常在我们电脑,我们都会安装非常多的软件,很多软件默认都会向系统注册右键菜单功能,这样方便我们快捷打开.比如图片文件,通过右键的方式,快捷选择PS软件打开. 如果我们电脑安装非常多的软件,就会导致我们 ...

  9. 2020-09-02:Sqoop的工作原理?

    福哥答案2020-09-02: [答案来自此链接](https://www.kaops.com/ivquest/104670)下图显示了Sqoop的工作流程: Sqoop导入导入工具将单个表从RDBM ...

  10. 2022-09-03:n块石头放置在二维平面中的一些整数坐标点上 每个坐标点上最多只能有一块石头 如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头。 给你一个长度为 n 的数组

    2022-09-03:n块石头放置在二维平面中的一些整数坐标点上 每个坐标点上最多只能有一块石头 如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头. 给你一个长度为 n 的数组 ...