python面向对象的组合和继承以及多继承

python:继承、组合 1、面向对象编程带来的好处之一是代码的重用,实现重用的方法之一是通过继承机制 ⑴继承是面向对象的三大特征之一,也是实现软件复用的重要手段 2、在Python中,类与类之间可以进行继承,即一个类可以从另一个类中继承属性和方法(非私有属性和非私有方法) ⑴继承可以理解成类之间父类型与子类型的关系:子类是对父类属性与方法的扩展 阅读详情

一、组合概念

一个类的对象作为另外一个类对象的属性
第一个例子:

class Weapon:
    def prick(self, obj):  # 这是该装备的主动技能,扎死对方
        obj.life_value -= 500  # 假设攻击力是500

class Person:  # 定义一个人类
    role = 'person'  # 人的角色属性都是人

    def __init__(self, name):
        self.name = name  # 每一个角色都有自己的昵称;
        self.weapon = Weapon()  # 给角色绑定一个武器;
        
egg = Person('egon')
egg.weapon.prick() 
#egg组合了一个武器的对象,可以直接egg.weapon来使用组合类中的所有方法

第二个例子计算圆环的面积

from math import pi
class Circle:
    def __init__(self,r):
        self.r = r
    def area(self):
        return pi * self.r ** 2 #求园的面积
    def perimeter(self):
        return self.r *pi * 2  #求园的周长

class Ring:
    def __init__(self,outside_r,inside_r):
        self.out_circle = Circle(outside_r)
        self.in_circle = Circle(inside_r)
    def area(self):
        return self.out_circle.area() - self.in_circle.area() #外环面积-内环面积
    def perimeter(self):
        return self.out_circle.perimeter() + self.in_circle.perimeter()

r = Ring(10,5)   #外环的半径和内环的半径
print(r.area())
print(r.perimeter())

二、继承

继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类
例子: 人狗大战

class Animal: #父类
    def __init__(self,name,dps,hp):
        self.name=name
        self.dps=dps
        self.hp=hp
    def eat(self):
        print('%s吃药,回血了'%(self.name))
class Person(Animal):#子类
    def __init__(self,name,dps,hp,sex):
        super().__init__(name,dps,hp)   #第二中写法  Animal.__init__(self,name,dps,hp)

        self.sex=sex
    def attack(self,dog):
        dog.hp -= self.dps
        print('%s打了%s,%s掉了%s点血,%s还剩%s点血'%(self.name,dog.name,dog.name,self.dps,dog.name,dog.hp))

class Dog(Animal):#子类
    def __init__(self,name,dps,hp,kind):
        super().__init__(name,dps,hp)
        self.kind=kind
    def bite(self,person):
        person.hp -= self.dps
        print('%s咬了%s,%s掉了%s点血,%s还剩%s点血' % (self.name, person.name, person.name, self.dps, person.name, person.hp))
alex=Person('alex',5,250,'男')
ha2=Dog('小黑',200,2000,'藏獒')
print(alex.__dict__)
print(ha2.__dict__)
alex.attack(ha2)
ha2.bite(alex)
ha2.eat()

例子2

class Foo:
    def __init__(self):
        self.func()
    def func(self):
        print('in Foo')

class Son(Foo):

    def func(self):
        print('in Son')
Son() 

#打印结果是in son

实例化了一个对象,找自己方法里面的self,然后再去执行父类里面的self也就是son里面是self,然后又去调用func,所以打印in son

三、多继承

python两种类

  • 经典类 py3已经灭绝了 在python2里还存在,在py2中只要程序员不主动继承object,这个类就是经典类 —— 深度优先
  • 新式类 python3所有的类都

钻石继承

 class A:
     def f(self):
         print('in A')

 class B(A):
     def f(self):
         print('in B')
         super().f()
 
 class C(A):
     pass
     def f(self):
         print('in C')
         super().f()
 
 class D(B,C):
     def f(self):
         print('in D')
         super().f()
 
 d = D()
 d.f()
 print(D.mro()) #可以查看继承的顺序
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:725638078

#打印结果

in D
in B
in C
in A
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]

super和找父类这件事是两回事

  • 在单继承中 super就是找父类
  • 在多级承中 super的轨迹 是根据整个模型的起始点而展开的一个广度优先顺序 遵循mro规则

例子2

class A:
    def f(self):
        print('in A')

class B(A):
    pass
    # def f(self):
    #     print('in B')

class C(A):
    pass
    # def f(self):
    #     print('in C')


class D(B,C):
    pass
    # def f(self):
    #     print('in D')

class E(C):
    pass
    # def f(self):
    #     print('in B')

class F(D,E):
    pass
    # def f(self):
    #     print('in C')

# d = D()
# d.f()

print(F.mro())
UNet改进(19):基于残差注意力模块Residual Attention的高效分割网络设计 本文提出一种结合注意力机制的改进UNet网络,通过引入残差注意力模块(ResidualAttentionBlock)增强医学图像分割性能。该网络在传统UNet的U型结构基础上,创新性地将轻量级注意力机制与残差连接相结合,在编码器-解码器各层级实现特征重标定。改进后的网络具有三方面优势:通过注意力机制自适应聚焦关键特征区域,利用残差连接缓解梯度消失问题,采用模块化设计灵活配置注意力位置。 阅读详情

相关推荐

基于STM32的馆藏文物保存环境监测系统设计与实现

针对馆藏文物保存环境中温湿度、光照、有害气体等参数波动易导致文物损坏的问题,本文设计了一种基于STM32微控制器的馆藏文物保存环境监测系统。该系统以STM32L431RCT6为核心,集成高精度传感器实现多参数实时采集,通过有线与无线结合的通信方式构建监测网络,具备数据存储、异常预警、远程监控等功能。测试结果表明,系统温湿度测量精度分别达±0.2℃、±2%RH,光照与有害气体检测误差≤5%,可满足文物保存环境的高精度监测需求,为文物保护提供科学的数据支撑。

m0_74026776的博客 1541

Python中的类的继承和组合

我们都知道,在创建多个函数的时候有些函数中的方法有重复,如果在每个函数中一个一个去写又会显得代码十分冗余,那么Python便给出了继承这一功能.通过继承不仅可以使子类使用父类中的属性和方法,还能强化代码的逻辑性.在Python中类和类之间也允许多继承,即一个类允许继承多个类,同样,这个子类也可以调用所继承的父类中的属性和方法,但是若父类中有相同方法或者属性时子类在调用时会根据继承顺序来调用。不同的继承方式有着不同的逻辑关系,但是他们的目的都只有一个:简化代码,强化逻辑。

qq_74424826的博客 420

VPI与Matlab协同仿真:相干光通信接收端DSP算法全解析

本文详细解析了如何利用VPI与Matlab协同仿真,构建完整的相干光通信接收端DSP算法处理闭环。重点介绍了从VPI导出数据后,在Matlab中实现时钟恢复、偏振解复用和载波相位估计等核心算法的步骤与原理,并阐述了如何通过误码率计算完成仿真验证,为相干光通信系统算法研究与验证提供了高效实用的方法。

ll5678的博客 608

Python 面向对象之继承和组合

可以看到这两个类之间有太多重复的内容了,所以使用在创建双发射手的时候使用继承 可以直接继承他们的属性(名字和攻击力),继承方法(扭动身体的方法),重写方法(攻击) python支撑多继承,新建的类可以继承一个或者多个父类 多继承的例子,我们来简单的写以下豌豆僵尸 豌豆僵尸继承了豌豆射手类和僵尸类 【3】经典类和新式类 经典类:没有继承类的所有子类 新式类:继承了类的子类 在中如果不写继承关系那么就将默认继承object类,所以**里面都是新式类** 【二】实例属性查找顺序 【1】不存在隐藏属性

weixin_48183870的博客 1214

行为验证码 AJ-Captcha 使用文档

AJ-Captcha验证码系统集成指南:需添加captcha-spring-boot-starter和Redis依赖,配置Redis连接。核心实现包括Redis缓存服务类CaptchaCacheRedisImpl(含设置、查询、删除验证码等方法)、SPI配置文件及Spring Boot配置类(配置验证码属性和Redis模板)。系统支持验证码生成、校验、防刷等安全功能,适用于Web应用安全验证场景。

千层冷面的博客 2108

RPA实战-UiPath自动化处理Outlook邮件附件全流程解析

本文详细解析了如何使用UiPath实现Outlook邮件附件的自动化处理全流程,涵盖环境配置、核心流程实现、高级功能扩展及性能优化技巧。通过RPA技术,企业可大幅提升邮件附件处理效率,减少人工操作错误,适用于财务、物流等多个场景。

weixin_33701251的博客 426

python 面向对象之继承

python 面向对象之继承:继承的概念、单继承、多继承、多层继承、子类中访问父类属性和方法(super())、私有权限

不能再留遗憾了的博客 2986

用Linkboy玩转Arduino:3小时搞定智能倒车雷达(附仿真文件下载)

本文详细介绍了如何利用Linkboy图形化编程工具,在3小时内快速搭建一个基于Arduino的智能倒车雷达项目。通过仿真环境,初学者无需硬件即可学习超声波测距原理、报警逻辑设计,并完成从虚拟仿真到实体硬件的完整流程。文章提供了清晰的步骤、调试技巧及功能扩展思路,并附有仿真文件,是入门Arduino和智能硬件制作的绝佳实践指南。

weixin_29159441的博客 402

Python面向对象设计:组合与继承深度解析教程

本教程全面探讨面向对象设计中组合与继承的核心概念与应用策略。通过Python示例代码深入解析"组合优于继承"原则,详细讲解Mixin模式、委托模式和策略模式的实现方法。涵盖电商系统、支付处理、UI框架等实战案例,帮助开发者构建灵活、可维护的面向对象系统。

YAnt的博客 1222

[Dify] 如何构建一个带评分功能的 Dify AI 教练系统

本文介绍如何利用Dify开源平台构建具备自动评分功能的AI教练系统。系统通过Prompt设计AI教练角色,使用OpenAPI定义评分工具接口,结合工作流编排实现提问、回答收集、评分和反馈的全流程。文章详细讲解了从AI教练身份设定、多维度评分标准设计到前端可视化展示的实现方法,并提供了可扩展建议,适用于语言训练、面试模拟等多种场景。该系统展示了Dify平台在构建智能化评估应用方面的优势,实现零代码开发专业AI教练解决方案。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 332

【即插即用模块】注意力篇 | ECCV 2024 | DPB:高低频动态分离+双提示融合,PSNR直冲40+!

本文提出了一种基于频率提示的图像恢复方法FPro,通过动态滤波器分离输入特征的高低频分量,并采用双提示块(DPB)进行频域专属提示生成与调制。DPB包含低频提示调制器(LPM)和高频提示调制器(HPM),分别处理不同频段信号,通过生成提示组件并融合解码器特征来优化恢复效果。实验表明,该方法在U型结构中表现优异,尤其适用于分割、底层视觉和多模态任务。模块通过动态无监督频率分离、频域专属提示生成和适配性融合机制,有效解决了传统方法对频域信息关注不足的问题,显著提升了图像恢复质量。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 146

python组合和继承_Python面向对象之继承和组合用法实例分析

本文实例讲述了Python面向对象之继承和组合用法。分享给大家供大家参考,具体如下:面向对象的组合用法软件重用的重要方式除了继承之外还有另外一种方式,即:组合组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合圆环是由两个圆组成的,圆环的面积是外面圆的面积减去内部圆的面积。圆环的周长是内部圆的周长加上外部圆的周长。这个时候,我们就首先实现一个圆形类,计算一个圆的周长和面积。然后在"环...

weixin_39774044的博客 600

把浮点数这件小事讲清楚:ABAP 7.51 里 Open SQL 与 ABAP CDS 的 FLTP 新玩法与避坑指南

ABAP浮点数计算的风险与应对 摘要:ABAP项目中的浮点数(FLTP)在跨平台计算时存在误差风险,同一逻辑在不同数据库平台可能产生细微差异。ABAP 7.51新增了两项关键能力:1)Open SQL和ABAP CDS中可为AVG函数指定结果类型,避免默认返回FLTP;2)ABAP CDS提供FLTP_TO_DEC转换函数。但需注意这些转换仍可能存在平台相关差异,且FLTP_TO_DEC会截断而非四舍五入小数位。开发者在涉及金额、数量等关键业务计算时,应明确数值语义并设计容错机制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 212

python中组合与继承的区别_Python面向对象之继承和组合用法实例分析

本文实例讲述了Python面向对象之继承和组合用法。分享给大家供大家参考,具体如下:面向对象的组合用法软件重用的重要方式除了继承之外还有另外一种方式,即:组合组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合圆环是由两个圆组成的,圆环的面积是外面圆的面积减去内部圆的面积。圆环的周长是内部圆的周长加上外部圆的周长。这个时候,我们就首先实现一个圆形类,计算一个圆的周长和面积。然后在"环...

weixin_39542936的博客 126

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python 面向对象编程之继承

文章目录python 面向对象编程之继承1.继承概念2.多继承的优劣3.Mixin机制 python 面向对象编程之继承 1.继承概念 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,新建的类可称为子类或派生类,父类又可称为基类或超类。 子类会遗传父类的属性和方法(私有化除外)。 python中新建的类支持多继承关系,一个类可以由一个或多个父类。 (新式类)在Python3中,没有显式地继承object,也会默认继承该类。 继承产生原因?-->用

qq_43729094的博客 386

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【python基础】不同的继承形式

在 Python 中,继承是面向对象编程(OOP)的重要特性,允许子类复用父类的属性和方法。

yuanzizheli的博客 340

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

测试面试必备:Python面向对象中的继承特点

继承是面向对象编程的三大特性之一(封装、继承、多态),它允许我们定义一个类(子类)来继承另一个类(父类)的属性和方法。继承的主要目的是实现代码重用和建立类之间的关系。

qq_58299462的博客 725

计算机组成原理核心:数据表示与运算全解析——补码、浮点数与溢出一次讲透

从进制转换到机器数表示,是理解计算机硬件如何存储与计算的第一步。二进制之所以成为计算机的基石,源于电子器件的物理特性;而原码、反码、补码、移码的设计逻辑,则深刻揭示了硬件如何用加法电路统一处理加减运算。补码加减法、溢出判断和标志位机制,构成了ALU运算部件的核心逻辑。在此基础上,IEEE 754浮点数标准通过阶码与尾数的巧妙布局,解决了定点数范围受限的问题,却也因此带来精度丢失的经典陷阱。这些基础概念不仅是计算机组成原理课程的重点,更是后续学习指令流水线、运算器设计以及排查底层bug的前提。本文系统梳理数据

weixin_30357231的博客 218

【Day 11-N22】Python类(3)——Python的继承性、多继承、方法重写

本文系统讲解了Python面向对象编程中的继承机制。主要内容包括:1)单继承的概念与语法,展示子类如何继承和扩展父类功能;2)多继承的用法与MRO方法解析顺序,说明如何组合多个父类功能;3)方法重写的实现方式与规则,演示子类定制父类行为的技巧;4)综合应用案例,呈现继承链和多继承的实际运用;5)最佳实践建议,强调合理使用继承、优先组合、充分测试等原则。全文通过代码示例详细解析了继承的核心概念和应用场景,为Python面向对象编程提供了实用指导。

qq_31964455的博客 773

python---继承

继承是面向对象编程的核心概念之一,它允许一个类(子类)继承另一个类(父类)的属性和方法。

qq_58662768的博客 495

python中的多继承

class Document: # 抽象基类 """抽象基类中可以定义多个抽象方法,可以全都不实现,只是约束子类的规范,子类中进行覆盖""" def __init__(self, content): self.content = content def print(self): # 抽象方法 ——> 抛出异常的方法(只定义不实现的方法) ...

野马 355

python节点之间的继承关系_Python 入门 之 类的三大关系(依赖 / 组合/ 继承关系)...

在面向对象的中,类与类之间存在三种关系:依赖关系、组合关系、继承关系。1、依赖关系:将一个类的类名或对象当做参数传递给另一个函数被使用的关系就是依赖关系class People:def __init__(self,name):self.name = namedef open(self,bx):bx.open_door(self)def close(self,bx):bx.close_door(se...

weixin_39664995的博客 223

【Python零基础到进阶】多继承、多态、鸭子类型、类的组合、私有属性和私有方法

私有属性:以双下划线 __ 开头的属性(如 __name)私有方法:以双下划线 __ 开头的方法(如 __getAge())核心作用:隐藏类的内部细节,外部无法直接访问。

2301_78096295的博客 654

Python中的继承

灵魂三问 什么是继承? 继承是一种创建新的类的方式,新创建的叫子类,继承的叫父类、超类、基类。 特点:子类可以使用父类的属性(特征、技能) 继承是类与类之间的关系 为什么要继承? 减少代码冗余、提高重用性 如何用继承? 单继承 class grandFather(): print('我是爷爷') class Parent(grandFather): print('我是父类') class SubClass(Parent): print('我是子类')

digitalkee的博客 409

python中继承和组合的区别_python入门教程09-03(python语法入门之继承与派生)

继承是面向对象编bai程du语言中的一个重要机制,通过继zhi承可以在一个dao一般的类的zhuan基础上建立新的类shu,被继承的类称为基类,在基类的基础上建立的新类成为派生类。下面我们来一起开一下细节吧!一 继承介绍继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,新建的类可称为子类或派生类,父类又可称为基类或超类classParentClass1: #定义父类 pa...

weixin_28913687的博客 342
上一篇: 关于python的内置堆
下一篇: python内置函数与匿名函数的用法
Python程序u猿
博客等级 码龄5年 622粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值