洗礼灵魂,修炼python(35)--面向对象编程(5)—多重继承,组合

Python支持多重继承吗? 继承是面向对象编程的一个重要方式,通过继承,子类可以扩展父类的功能,Python也具有该特性,除此之外,Python还可以使用多重继承。语法:class subClass(Base1,Base2)该语法的含义是创建了一个subClass类,让它同时继承了Base1和Base2的相关特性,关于继承还有以下规则需要遵循:1. 继承只会继承父类的方法,不能继承父类的变量;2. 要想继承父类的变量,需要执... 阅读详情

多重继承

关于继承在上一篇博文已经说过了,怎么继承相信你也懂了。那么进入进阶话题,多重继承

1.什么是多重继承

继承的概念你清楚,那么多重继承就简单了。我的理解就是子类继承多个基类

2.怎么多重继承

定义多个基类,然后子类定义时继承多个基类,这就是多重继承。

例1:

 

其实就和前面的一般继承是一样的对吧?就只是传入的基类由一个成了两个或多个而已

 

例2:定义一个儿子继承父母特征的子类

class Human:
    def __init__(self):
        self.head=1
        self.hands=2
        self.legs=2
    def walk(self):
        print('白天散步')
    def eat(self):
        print('补充能量')
    def sleep(self):
        print('晚上睡觉')

        
class Man(Human):
    def __init__(self,houjie,voice,figure):
        Human.__init__(self)
        self.houjie=houjie
        self.voice=voice
        self.figure=figure
    def psychological(self):
        print('爱探索,爱冒险')

        
class Women(Human):
    def __init__(self,houjie,voice,figure):
        Human.__init__(self)
        self.houjie=houjie
        self.voice=voice
        self.figure=figure
    def dothings(self):
        print('处事态度认真,细腻')

        
class Son(Man,Women):
    def thought(self):
        print('思想单纯天真')


s=Son('有喉结','声音低沉浑厚','身材高大壮实')

结果:

这个例子先继承了人类的特性,然后又从父母那继承了特有的属性,体现了多重继承以及继承再继承。如果你很感兴趣,你可以复制代码,自己下去定义一个女儿的子类

 

3.注意:多重继承,看起来代码很乱,所以尽量不要使用,容易产生BUG

 

4.继承和装饰器

前面讲解的装饰器和现在的继承其实是不是有很多相似的地方?是的,很多,因为有了继承和下面的组合,所以在实际开发中基本很少用装饰器来写框架啥的,比如web模块—django,都已经自带框架,哪还需要用装饰器啊?所以这也是装饰器被冷落的原因,但是装饰器是很强大的,多利用,在面试时如果懂装饰器是加分的

 

 

组合

 

1.什么是组合

即把类和实例化放到一个新类里,把旧类组合进去,不用继承,让横向的不是很有直接关系的类放到一起就是组合。好像没明白吧,不急,往下看

2.怎么组合

方法和继承差不多,将类作为参数传进去

例:

class programmer:
    def __init__(self,num1):
        self.num=num1

        
class writer:
    def __init__(self,num2):
        self.num=num2

        
class driver:
    def __init__(self,num3):
        self.num=num3

        
class Bus:
    def __init__(self,num1,num2,num3):
        self.programmer=programmer(num1)
        self.writer=writer(num2)
        self.driver=driver(num3)
    def sum_num(self):
        print ('公交车上一共有%d个程序员,%d个作家,%d个司机'%(self.programmer.num,self.writer.num,self.driver.num))



bus=Bus(2,3,1)
bus.sum_num()

 

 

像这样就是组合,程序员,作家,司机看似都没什么关系,但是他们同在一个公交车上这样的特定条件下,他们就有关系了,这种关系是一种横向关系。

3.组合和继承的区别

  • 横向关系即为组合
  • 纵向关系即为继承

 

 

 

组合和多重继承相对类里的用法来说,很少用,但你必须得知道有这种用法。

当知识图谱遇见多模态:突破文本界限的智能认知革命 本文探讨了知识图谱与多模态技术的融合,揭示了其在医疗诊断、文化保护等领域的革命性应用。通过图神经网络、对比学习框架和跨模态注意力机制等技术,实现了文本、图像和音频数据的智能关联与认知。文章还分享了在Neo4j等图数据库中的实践案例和优化策略,为构建下一代智能认知系统提供了技术参考。 阅读详情

相关推荐

用AI画电路板AI EDA初探Creating WiFi Radio with CELUS: A Step-by-Step Tutorial 使用CELU.IO创建WiFi收音机:分步教程

结论:整体还不太成熟,所选器件单元是欧美思维,器件选型成本和咱们华强北还是无法比。可以关注迭代,看客就当走马观花就行了;不过里面的单元模块还带有AI提问的这个比较好,值得国内EDA从业者学习。话不多说上正文:本教程目的是让我们深入了解如何使用CELUS设计平台构建WiFi收音机实战项目。本指南的重点是使用该平台来选择正确的解决方案,并整合一个项目,让您可以将音乐和节目从互联网直接传输到您自己构建的扬声器。

2301_81235726的博客 1万+

Python 进阶_OOP 面向对象编程_组合与继承

#目录 前言 组合 派生 通过继承来覆盖重载方法 最常用的重载场景实例方法的重载 从标准类中派生类方法的重载 前言 我们定义一个类是希望能够把类当成模块来使用,并把类嵌入到我们的应用代码中,与其他的数据类型、逻辑执行流结合使用。一般来说我们可以使用两种方法在代码中利用类,那就是组合和派生。 组合 ...

weixin_34212189的博客 312

通过JLink下载实现工控MCU批量烧录实战案例

利用JLink下载工具实现高效稳定的工控MCU批量烧录,提升产线效率。案例详细解析了脚本配置与自动化流程,突出jlink下载的可靠性和可扩展性,适用于大规模嵌入式部署场景。

weixin_30205153的博客 812

Java的mixin模式说明

java语法规定只能使用单继承,避免多继承带来的麻烦,但是多继承也有自己的优点。而mixin模式可以使java拥有多重继承。 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。 转载于http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138682005

李小舜的博客 6229

海康线扫相机平场矫正实战:从原理到精准成像

本文深入解析了海康线扫相机平场矫正的原理与实战操作。通过拆解暗场与明场矫正的物理意义,揭示了其消除系统噪声、补偿像素响应不均的核心机制。文章详细指导了在海康相机上进行平场矫正的标准化流程、关键参数设置(如行高、灰度值控制)及常见误区,并提供了针对高行频匹配、环境稳定性维护等进阶调优技巧与问题排查指南,旨在帮助用户实现从原理理解到精准成像的跨越。

tomato的博客 790

2024最新指南:如何用Python批量下载Sentinel-2数据(附避坑清单)

本文提供2024年最新Python批量下载Sentinel-2遥感数据的完整指南,涵盖环境配置、API准备、核心下载流程实现及实战避坑清单。通过智能查询器、断点续传下载器等实用工具,帮助用户高效获取遥感数据,避免常见网络问题和数据完整性验证失败。

silver的专栏 618

Python3面向对象--2.继承(4)多重继承

多重继承 多重继承概念 多重继承容易引发的问题 问题的解救额方法 多重继承就是子类继承多个父类,原则非常简单。 混入:一个类的存在,是为了被其他类继承并添加额外的功能,不是一个单独存在的超类。 多重继承最简单有效的方式就是混入。 例:C继承A和B,A和B继承0 如果它们分别调用各自的方法,那么便没有影响,如果调用继承自各自超类的方法,那么输出就会和预期不符合 例: class BaseClass: num_base_calls =0 def call_me(self): p

w1234567465的博客 438

概率论 知识图谱 + 实战案例解析

本文通过构建概率论知识图谱,系统梳理了从随机试验、概率、条件概率到随机变量与分布的核心概念及其内在联系。结合朴素贝叶斯分类器和蒙特卡洛模拟等实战案例,深入解析了条件概率、独立性及大数定律等理论如何应用于机器学习与实际问题求解,旨在帮助读者建立结构化思维,将理论有效转化为解决实际问题的能力。

weixin_29051193的博客 266

洗礼灵魂,修炼python(23)--自定义函数(4)—闭包进阶问题—>报错UnboundLocalError: local variable 'x' referenced before assign

闭包(lexical closure)什么是闭包前面已经说过了,但是由于遗留问题,所以单独作为一个章节详解讲解下不多说,看例子:def funx(x): def funy(y): return x*y #此时的funy函数对外层funx函数的变量调用,则称为闭包 return funy 结果:>>> i=funx(4) >>&g...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 2721

RAG 实战:LangChain + 向量数据库构建知识问答系统

从文档加载、分割、嵌入到检索增强生成,完整实现一个基于本地文档的知识问答系统。

kaixin110a的博客 187

大模型实战—通义千问大模型微调

这个参数仅针对 llama 类型的模型结构,默认勾选的是 q_proj 和 v_proj,具体的名词不容易理解,我就不多说了,可以简单的认为是对模型的理解能力进行优化,一般这两个就够了。当这个值较高时,适应新任务的能力会增强,但是对基础模型的影响会比较大,有过拟合的风险,尤其是在数据量有限的情况下。为了方便测试,我在云环境也创建了一个镜像,相关的环境都配置好了,可以直接使用几个国内开源的大语言模型,比如清华智谱的ChatGLM3-6B、零一万物的Yi-34B,还有最近阿里云开源的Qwen1.5-32B。

7万+

洗礼灵魂,修炼python(10)--有趣的判断分支+从实例中掌握循环语句

所有的编程语言里都有判断语句和循环语句。判断语句则是用来分支程序流程的循环语句则是为了实现一个效果,让程序的规律性的重复操作不用说,分支和循环自然在python里也是有的一,条件判断:if,if……else1.在python里if可以单独出现,也可以和else配套出现,但是else不能单独出现这里则要提到一个在编程里一个共有的特性:悬挂else:即出现多余或者不和if匹配的else,就叫悬挂els...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 794

OpenStack [ compute_id ] 设计上的小缺陷

而 nova 代码中硬编码(或默认配置)将 compute_id 放在 site-packages 目录,属于 设计上的小缺陷—— 把 “库安装目录” 和 “运行时数据目录” 混在一起了,才导致需要临时调整这个目录的权限。# 配置项说明:node_identity_file 是 nova 用于指定节点标识文件路径的官方配置项,优先级高于代码中的默认路径。自定义 compute_id 路径,指向 /var/lib/nova/ 目录下的 compute_id 文件;

求知若渴,虚心若愚。 491

洗礼灵魂,修炼python(14)--模块decimal, fractions,operator,collections以及精度介绍

decimal1.作用:用于浮点数计算。相比内置的二进制浮点数实现 float这个类型有助于 金融应用和其它需要精确十进制表达的场合,控制精度,控制舍入以适应法律或者规定要求,确保十进制数位精度,或者用户希望计算结果与手算相符的场合。Decimal 重现了手工的数学运算,这就确保了二进制浮点数无法精确保有的数据精度。 高精度使 Decimal 可以执行二进制浮点数无法进行的模运算和等值测试2.函数...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 644

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

洗礼灵魂,修炼python(1)--python简介

首先,本人也是刚接触python短短几个月,没有老鸟的经验和技能,大佬勿喷,以下所有皆是本人对python的理解 python,是一种解释型(高级)的,面向对象的,带有动态语义的高级程序设计的开源语言。1989年,Guido von Rossum(荷兰人)人称龟叔,他在圣诞节时因为无聊而开发出来的,详细的python发展史介绍可以百度或Google,已经很多了,不再赘述。 python是从20

app安全逆向、移动开发、tls/ja3、爬虫、反爬 592

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

洗礼灵魂,修炼python(7)--元组,集合,不可变集合

前面已经把列表的基本用法讲解完接着讲python的几大核心之——元组(tuple)1.什么是元组?类似列表,但为不可变对象,之前提到列表是可变对象,所谓可变对象就是支持原处修改,并且在修改前后对应的内存空间里的id依然不变,而不可变对象就是不支持原处修改,得重新赋值才行,但在重新赋值的时候,内存ID已经发生改变。元组的特征是什么呢?下面会解释!2.创建元组的两种方式:注意:元组的特征是()没错,但...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 520

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

洗礼灵魂,修炼python(15)--列表进阶话题—>列表解析/列表生成器

是的,我是想到什么知识点就说什么,没有固定的主题,我的标题都是在写完博客再给的。本篇博文说说列表进阶话题。其实列表应该是比较熟悉的了,而毫不夸张的说,在实际的开发中,列表也是使用的最多的,以后你会体会到我说的这句话的。列表解析1.什么是列表解析:根据已有列表,高效生成新列表的方式,还有另一个叫法是叫列表推导式2.作用:列表解析是python迭代机制的一种应用,它常用于实现创建新的列表,因此要放置在...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 512

洗礼灵魂,修炼python(19)--文件I/O操作,linecache,fileinput模块

文件I/O操作1.什么是文件I/O操作首先I/O(input/output),即输入/输出端口,然后文件,大家应该都是是什么,一个数据,一个txt或者html文档就是一个文件。文件操作就是对文件进行读写删除等的操作。文件I/O操作,个人理解,就是与用户有交互式的文件操作,换句话就是读写操作文件也是一个可迭代对象2.有哪些操作:1):I/O操作:raw_input函数,input函数即可以进行I/O...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 478

洗礼灵魂,修炼python(40)--面向对象编程(10)—定制魔法方法+time模块

定制魔法方法1.什么是定制魔法方法首先定制是什么意思呢?其实就是自定义了,根据我们想要的要求来自定义。而在python中,其实那些所谓的内置函数,内置方法,内置属性之类的其实也是自定义出来的,不过是龟数开发python时已经给出了,已经自带了基本能想到的功能都带有了,换句话就是已经给我们事先定义好了,要用的话,直接拿来就用就是,不需要我们自己再去定义。定制魔法方法就是自定义魔法方法了。但是必须遵循...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 460

洗礼灵魂,修炼python(3)--从一个简单的print代码揭露编码问题,运行原理和语法习惯

前期工作已经准备好后,可以打开IDE编辑器了,你可以选择python自带的IDLE,也可以选择第三方的,这里我使用pycharm——一个专门为python而生的IDE按照惯例,第一个python代码打印一个所有开发语言里入门必学“hello,world”?no,你错了,我偏不 第一行是编码,utf-8这是国际使用标准,如果我不加的话,很容易出错第二行print(打印的意思)语句,是python的关...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 449

洗礼灵魂,修炼python(18)--温故加知新

类型转换:1.str(),repr(),format():将非字符串数据转换为字符串str():对象序列化的结果,相当于print输出repr():程序中某个对象精确值format():利用特定格式转换为字符串,format函数用法见后面2.int():转为整数形int函数也可以使用进制:(这个在前面已经提到过的)  Int转换类型并给定进制的方法,并不是都可行: 3.complex():转换为复...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 447

洗礼灵魂,修炼python(21)--自定义函数(2)—函数文档,doctest模块,形参,实参,默认参数,关键字参数,收集参数,位置参数

函数文档1.什么是函数文档:就是放在函数体之前的一段说明,其本身是一段字符串,一个完整的函数需要带有函数文档,这样利于他人阅读,方便理解此函数的作用,能做什么运算2.怎么查看函数文档:function.__doc__   注意:不加小括号3.例:你可能会想,假如我不传入参数能直接打印函数文档吗?测试一下就知道:结果是可以的接着想,前面说不能带小括号,我确认一下是不是真的不能带小括号呢:果然是不行的...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 434

洗礼灵魂,修炼python(8)--高效的字典

python几大核心之——字典(dict)1.什么是字典学生时代都用过字典吧?通过这个字的读音或者偏旁就能用字典查到其相关信息,词性,意思,组词,造句,还有在什么场合下用这个字等等的。在python中的这个字典,其实原理是一样的,当然,python里的这个字典肯定不是用来查字的,是用来查我们需要的数据的,不过,如果你真要用python字典来查哪个字也是可以的,通过python的网络爬虫来查字就行,...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 410

洗礼灵魂,修炼python(9)--灵性的字符串

python几大核心之——字符串1.什么是字符串其实前面说到数据类型时说过了,就是带有引号的参数,“”引号内的一切东西就是字符串,字符串又叫文本。2.创建字符串的两种方式:3.字符串的方法: python2:python3:同样的,不同版本里字符串的方法还是很多不一样,老套路,我还是只解析常用的:capitalize,casefold.center,count,decode,encode,ends...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 405

洗礼灵魂,修炼python(5)--python操作符,内置函数

 前面提到了BIF(内置函数)这个概念,什么是内置函数,就是python已经定义好的函数,不需要人为再自己定义,直接拿来就可以用的函数,那么都有哪些BIF呢?可以在交互式界面(IDLE)输入这段代码,注意是两边都是双下划线dir(__builtins__)  则可以查看不同python版本都有哪些BIF就看这些就能很明显的看出python3和python2还是有很多区别的,想看哪个BIF的用法就直...

app安全逆向、移动开发、tls/ja3、爬虫、反爬 402

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 392
上一篇: 洗礼灵魂,修炼python(34)--面向对象编程(4)—继承
下一篇: 洗礼灵魂,修炼python(36)--面向对象编程(6)—类的相关内置函数issubclass,hasattr等
geekbyte.
博客等级 码龄11年 308粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值