首页 > 编程语言 >【python基础】类-继承

【python基础】类-继承

时间:2023-06-21 17:36:52浏览次数:35  
标签:__ 调用 python 子类 基础 继承 父类 方法 属性

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

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

继承语法格式:

class 子类名(父类名):

1.子类的__init__方法

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

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

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

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

image

注意:

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

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

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

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

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

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

image

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

注意:

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

image

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

3.重写父类的方法

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

编写程序如下所示:

image

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

标签:__,调用,python,子类,基础,继承,父类,方法,属性
From: https://www.cnblogs.com/lbprogram/p/17496760.html

相关文章

  • Java基础-Day01
    Java基础-Day01JDKJREJVM关系JDK=(Java开发工具包)=Java的开发工具(javac.exe,java.exe,javadoc.exe等)+JRE(Java运行环境)JRE=JVM(Java虚拟机)+Java核心类库JDK的下载、安装下载:官网,gitbub安装:傻瓜式安装:JDK/JRE注意问题:安装软件的路径中不能包含中文、空格为什么要配......
  • CentOS7 源码编译安装 Python 3.8.10,开启 SSL 功能
    背景CentOS7自带的Python3,或者通过yum安装的Python3,可能会有无法使用ssl的问题:$python3Python3.8.10(default,Jun132023,14:51:15)[GCC11.2.120220127(RedHat11.2.1-9)]onlinuxType"help","copyright","credits"or"license&qu......
  • Python 安装依赖包,出现 ssl.SSLCertVerificationError 的问题,解决方法
    问题描述CentOS7环境,已安装Python3.8.10。最近项目开发,需要切换solidity版本,参考开发文档,需要执行如下命令pipinstallsolc-select==0.2.0#安装指定版本solcsolc-selectinstall<solc版本号>#切换solc版本solc-selectuse<solc版本号>先使用pipinstallsolc-......
  • python基础之并发
    一、多线程示例代码1:简单多线程importtimeimportthreadingdeffoo(t):print("foo开始")time.sleep(t)print("foo结束")start=time.time()t_list=[]foriinrange(100):t=threading.Thread(target=foo,args=(2,))#注意,如果只有一个参......
  • python在if判断语句中对于0和None的处理
    情景:我在访问一个字典的key,但是我不知道这个key有没有,或者有,我也不知道value取值多少,即dict1.get(key)有可能输出None,也有可能输出0如果我对这个key进行判断,例如:ifdict1.get(key)这种判断,可能对于None和0的条件都是一样的,因此,如果我只是想判断是否存在这个key,我需要ifdict1......
  • Linux下卸载python,并安装pyenv管理python版本
    一、卸载已安装的python版本查找已安装的Python3版本:运行以下命令以获取已安装的Python3版本列表:dpkg-l|greppython3找到列出所有以python3开头的已安装软件包。可能会有多个Python3相关的软件包,因此仔细检查输出的内容。2.卸载Python3软件包:从步骤1......
  • python字典访问不存在的key
    当你使用一个不存在的键(key)去访问一个Python字典(dict)时,会触发一个KeyError异常。这是Python提供的一种机制,用于指示你正在尝试访问一个字典中不存在的键。以下是一个简单的示例,演示了当使用一个不存在的键去访问字典时会发生的情况:my_dict={"apple":3,"banana":6,"orange......
  • 供应链协同——企业全球供应链可持续发展的基础
    供应链协同,是真正提高企业全球供应链透明度、韧性和可持续发展的基础协同能力。整个供应链协同能力包括六个模块:库存协同:有没有货,在海外的库存和国内的库存信息协同,形成高效的调货;计划协同:基于这些信息能够快速地滚动和预警;订单协同:端到端数字转型的能力,保障供应链稳定,抵御干扰;运输......
  • Python中的pickle模块:对象序列化与反序列化
    在Python中,对象的序列化和反序列化是一项常见的任务。pickle模块提供了一种简单且强大的方法来实现对象的序列化和反序列化,使得开发者能够方便地将复杂的Python对象转化为字节流并在需要时重新还原。本文将详细介绍pickle模块的使用方法和原理,并探讨其在数据持久化和跨进程通信中......
  • 神经网络基础知识与实现
    目录神经网络是人工智能领域中的一个重要概念,它是指一种模拟人脑神经元的计算方法。神经网络通过从大量数据中学习,来预测未来的状态或执行特定的任务。本文将介绍神经网络的基础知识与实现,包括神经网络的基本概念、技术原理、实现步骤以及示例与应用。同时,本文还将探讨神经网络的性......