css不继承父类样式_提升你的Python编程能力,细说类的继承,拿走不谢

今天咱们聊点啥呢?要不还是聊点Python基础的东东吧,大家已经都知道啦,Python呢是一种面向对象的脚本编程语言,那面向对象的编程语言呢,都会支持面向对象的三大特性,你知道是哪三大特性吗?当然是咱们常常挂在嘴边的封装、继承和多态啦,那今天呢,咱们就先说个用得最多的继承吧,好啦,就重点讲讲Python相关的类的继承啦!

好啦,那咱们就开始聊聊吧!


Python类的定义

首先开门见山说一下哦,Python的类的继承是支持多继承机制的。

那Python的类的继承是怎样的呢?其实呢,Python的类继承很简单哦,就是在定义子类时,将多个父类放在子类后面的圆括号中就可以啦!语法格式如下所示哦:

class SubClass (SuperClass1, SuperClass2, ...)

看到了吗,Python类的继承定义的格式是不是很简单哦!只要在子类的后面加个圆括号,然后在括号里面添加上所要继承的父类就可以啦!

其实呢,Python类和其他面向对象语言是一样滴,如果不显示定义继承一个父类,也是有个默认的公共父类哦,它就是object类,所以呀,object类是所有Python类的父类哦,有两种可能哦,一种可能是其直接父类,另一种可能呢当然就是其间接父类啦!

其实呢,如果从Python子类和其父类两个角度来看的话,是两种不同的效果哦,子类呢就相当于对父类进行了扩展啦,而父类呢则是派生出子类啦!

好啦,为了让大家对Python类的继承有深入的理解,咱们还是老规矩啦,举个“栗子”:

a6ce3eaa47ae6c86148adb4c9802c6f9.png

好啦,看到了吗,上面的“栗子”程序中呢,定义了两个父类,分别是Animal类和Pig类哦,然后呢,定义了一个子类Peggy,它继承了两个父类,这个Peggy子类呢并木有定义自己的程序单元哦,所以就用pass代替啦!

这样,当主程序创建了Peggy类对象后呢,就可以访问Peggy类中的对象啦,分别是继承自父类Animal的info()方法和继承自Pig类的taste()方法,这就是继承的强大作用,就是相当于子类Peggy扩展了父类Animal和Pig哦。

好啦,咱们运行一下上面这个“栗子”看看结果吧:

b0c5bb4fc1cb2207bf2813d6ac8368fa.png

Python的多继承

前面咱们说啦,Python是支持多继承的,但是呢,还是不建议大家用哦,因为多继承干的活单继承都能干哦,而且,单继承在流程和思路来说更为清晰和易懂哦!

到这可能大家有问题啦:人家Python自身都支持多继承啦,你为啥还不推荐大家用呢,存在和支持就是有道理的啊?好啦,为了解答大家的这个疑惑,咱们就来聊聊多继承的弊端吧!

首先呢,咱们来假定一个场景,就是哈,当一个子类有多个直接父类,也就是多继承的话,这个子类呢就会继承得到它的所有父类的方法哦,这是大家所清楚的,但是呢,如果这个子类所继承的多个父类中存在同名的方法时呢,这时会出现什么情况呢?在这呢,俺先卖个关子,咱们还是老惯例,举个“栗子”让大家看看啦,这样印象更深刻哦!

c28d11a6fa7c61562131300125ef96d2.png

好啦,看到上面这个“栗子”了吗,咱们分别定义了两个父类SuperClass1和SuperClass2,这两个父类呢,有个共同点,就是包含相同的info()方法哦,这是咱们再定义一个继承了这两个父类的子类SubClass,这时呢,咱们再主程序中创建了子类SubClass的对象,然后用子类对象sc去调用info()方法,你们猜这是会发生什么情况呢?

可以运行一下看看哦:

01eeba778eb61cd5754227fd6f032784.png

看到了吗,运行后输出的是父类SuperClass1中的info()方法!在这先不给大家解释哦,咱们修改一下上面的“栗子”,将SubClass子类所继承的两个父类的顺序调换一下,看看结果如何哦,程序就编程如下样式啦:

5460a7871cbe381a9d96bb01ac2f3c98.png

将两个父类的继承顺序进行了位置调换哦,这时咱们再运行看看结果如何哦:

9c9a8f20d8d7c0eefb75d41a3cfe7eef.png

看到了吗,这时输出的是父类SuperClass2中的info()方法哦!

好啦,到这呢,可能已经由朋友看明白了,其实呢,在Python的多继承中,如果子类所继承的父类中出现了相同的方法,这时就会和子类所继承的父类的顺序有关哦,排在前面的父类中的方法就会遮盖排在后面的父类中的方法哦!当然啦,如果子类所继承的父类中没有相同的方法,就和父类的顺序没有关系啦,因为子类所调用的父类的方法会按所继承的父类的顺序查找,这时父类因为没有相同的方法,也就是方法是唯一的,它就是找到这个方法所在的父类,然后进行调用哦!对于这点大家一定要牢记哦!

好啦,关于Python多继承的弊端,相信大家通过上面的介绍已经深刻理解了哈,因此呢,还是建议大家尽量少用多继承哦!

好啦,今天关于Python的类继承相关的东东就先和大家聊这么多吧,咱们下次再见哦![再见]


敬请关注“品位集结号”,为您带来意外的小知识![比心][握手][比心]

4d8168a23af313dadc015f03c90398c7.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R 回归 虚拟变量na_【R语言进阶】Logistic回归及哑变量设置

点击上方“蓝字”,我们一起分析数据Logistic回归是最常用的多因素回归模型,在医学研究中,常用于研究疾病的危险因素,下面我们一起来看看,R语言是如何实现Logistic回归的。1第一步 导入数据首先,在excel里全选数据集,右键复制。然后&#xff0…

logisticregression参数_通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战...

前情提要:通俗地说逻辑回归【Logistic regression】算法(一) 逻辑回归模型原理介绍上一篇主要介绍了逻辑回归中,相对理论化的知识,这次主要是对上篇做一点点补充,以及介绍sklearn 逻辑回归模型的参数&#…

tensorflow适用于python版本_tensorflow用python哪个版本更好?

tensorflow用python哪个版本?一、安装anaconda tensorflow是基于python脚本语言的,因此需要安装python, 当然还需要安装numpy、scipy、six、matplotlib等几十个扩展包。如果一个个安装,装到啥时候去?(我曾经光安装scip…

php parse url ctf,【SSRF】如何绕过filter_var(), preg_match() 和 parse_url()

0x01 前言这篇文章是在我看完一片国外安全大佬写的文章后对其进行总结并翻译得到的。0x02 正文之绕过filter_var和preg_match本片文章主要深入一种php ssrf的技术——如何绕过例如filter_var(), preg_match()和parse_url()等函数。本次我进行测试的php版本全部为php v5.6.30php…

python json解析_python读取json文件并解析

原博文 2018-07-09 18:35 − # -*- coding: utf-8 -*- import os import json import sys reload(sys) sys.setdefaultencoding(utf-8) filelistos.listdir(E:\\log\\files\\) for ite... 相关推荐 2019-12-05 20:03 − 如何使用 Python 语言来编码和解码 JSON 对象。 JSON(Jav…

python中文词云图代码_Python简单实现词云图代码及步骤解析

一、安装 wordcloud pip install wordcloud 二、加载包、设置路径 import os from wordcloud import WordCloud import matplotlib.pyplot as plt os.chdir(E:\\pyspace\\tmp) 三、词云图示例 1、默认参数示例 text Keep it simple and stupid. wc WordCloud() # 实例化词云图…

usb大容量存储设备驱动程序_20年历史了!为什么USB接口还存在?网友:原来如此...

USB接口作为计算机领域应用最广泛的数据接口,已有20多年的历史。和它的名字一样,USB(Universal Serial Bus)最初也是为统一的数据接口而设计的。你几乎可以用它来代替计算机的各种外部数据接口,只需为它设计相应的驱动程序。随着市场对USB接口…

linux终端炫酷命令,你不得不知道11个炫酷的 Linux 终端命令

很多朋友都很喜欢Linux ,Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统,Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可…

lasso回归_一文读懂线性回归、岭回归和Lasso回归

(图片由AI科技大本营付费下载自视觉中国)作者 | 文杰编辑 | yuquanle本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失,然后介绍了线性回归中常用的两种范数来解决过拟合和…

springcloud架构特点_打造企业级微服务平台架构,分布式应用场景管理

微服务平台架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务。微服务系统可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我…

怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 5 迅速判断回文串的Manacher算法...

本文始发于个人公众号: TechFlow题意Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Link: https://leetcode.com/problems/longest-palindromic-substring/翻译给定一个字符串s&#xff0c…

spring和mybatis结合做简单的增删查改系统_springbootamp;amp;vue简单的景点信息管理系统...

springboot&&vue简单的景点信息管理系统这两天闲着没有什么事,就根据陈哥的教程,试着写了一个springboot和vue的简单的景点信息管理系统。也就大致实现了最基本的增删查改。先看看效果图吧:1、登陆界面: 2、注册界面&…

spark算子_十、Spark之详解Action类算子

常用Action类算子列表reduce(func): 通过func函数来对RDD中所有元素进行聚合运算,先运算分区内数据,再运算分区间数据。scala> val rdd1 sc.makeRDD(1 to 100)rdd1: org.apache.spark.rdd.RDD[Int] ParallelCollectionRDD[4] at makeRDD at :24# 对…

await原理 js_「速围」Node.js V14.3.0 发布支持顶级 Await 和 REPL 增强功能

本周,Nodejs v14.3.0 发布。这个版本包括添加顶级 Await、REPL 增强等功能。REPL 增强通过自动补全改进对 REPL 的预览支持,例如,下图中当输入 process.ver 之后,不需要输入剩下的实际内容,它帮我们生成了自动补全的输…

linux输入ls后不显示_零基础学习之Linux基础命令小结

安装完重启后,没有像sery所说在图形界面崩溃了,由于我没有安装X-WINDOWS而是直接进入了文本界面。如果你想做linux管理的话,最好在文本界面下工作,这样会适应如下图:第一行显示的是我们所安装的linux是Red Hat 企业4第二行显示的是…

.gitignore文件_【第1739期】为Git仓库里的.idea文件夹正名

前言.idea该不该提交到代码仓库中呢?你的意见呢?今日早读文章由《Flask Web开发》作者李辉分享。正文从这开始~~在网络上,我曾多次看到人们对于Git仓库中的.idea文件夹的偏见。最近的一次是在某个博客中技术专家对于志…

监控linux时间不对,shell 计算故障时间 配合web监控

#!/bin/bash#checkfail.log 为SHELL监控网站时间存放的日志文件 https://blog.51cto.com/junhai/2437965fail_time(){starttimetail -n 1000 checkfail.log |grep "$url"|grep "第1次"|tail -n 3|head -n 1|awk {print $1, $2} #取网站挂掉的时间endtimet…

linux redis清空数据恢复,Redis数据恢复--误删数据后一次吓尿的经历

1、起因,一个flushdb命令因为误操作,输入了一个flushdb命令,导到redis里0号库里的数据全部清空,OMG,这里有不少重要信息,如果被领导知道,必开除2、appendonly留有生机仔细想想,当时数…

c语言 枚举类型 uint32_浅谈C语言枚举类型 | 附自创用法分享

经济学家说过,路边是不会有100元的;但如果有,你还是要捡起来。同理,在貌似万物免费的网络时代,你是很难找到有针对性的好资料;但是如果有,希望你能认真学习吸收。比如笔者今天写的这一篇一今天这…

java pdf增删改查_如何利用Java代码操作索引库?

今天是刘小爱自学Java的第161天。感谢你的观看,谢谢你。学习计划安排如下:学了几天的Elasticserch,但都是它本身的知识点,如何通过Java语言去操作它呢?这就好比以前学数据库,在数据库工具中通过sql语句也能…