据说80%以上的Python程序员不懂这个概念 - mixin

Python中的协议 、鸭子类型 、 抽象基类 、混入类 篇文章探讨一下python中的几个概念:协议 、鸭子类型 、 抽象基类 、混入类。一、协议在python中,协议是一个或一组方法。例如,Python 的序列协议包含 len 和 getitem 两个方法, 上下文管理器协议包含 enter 和 exit 两个方法(前者参见文章 《一文读懂python可迭代对象、迭代器和生成器》,后者参见文章《python中的上下文管理器和你所不了解的with》),... 阅读详情

mixin,中文叫做混入

这个概念也许有点难以理解,那就直接上代码吧:

class mixin1:
 def method1(self):
  print('this is mixin method1')

 def method2(self):
  print('this is mixin method2')

class mixin2:
 def method3(self):
  print('this is mixin2 method3')

 def method4(self):
  print('this is mixin2 method4')

我们定义了两个类,它们各有两个方法,名字是随便取的。

我们接下来可以定义一个新的类,继承这两个类:

class Maishu(mixin1, mixin2):
 pass

ms = Maishu()
ms.method1()
ms.method2()
ms.method3()
ms.method4()

输出结果:

this is mixin method1
this is mixin method2
this is mixin2 method3
this is mixin2 method4

这个新类Maishu什么都没做,就轻松拥有了这4个方法,因为它混入了前面两个类的方法。

懂的人可能会说:这不就是多继承吗?

没错,这就是多继承。多继承不懂?给我留言,我可以接下来补充。

混入从语法上讲就是多继承,但之所以被称作混入,是因为以下特点:

  • 混入可以给一个类添加额外的方法,所以被称为混入。但继承也可以的,还是没说清楚混入的特点。

  • 被混入的类通常不会被实例化,它们的存在就是为了提供一组方法。这就是混入的特点了。

它们不像其他父类一样,想要当你的老子(父类),它们只不过是想给你增加点本领(方法)。

  • 被混入的类通常没有属性。还是上面的点,它们通常就是为了提供一组方法而已。

  • 从语法本质上,它们就是多继承。混入可以说是一种设计模式,自身并没有特别的语法。

差不多这就是混入的本质了。也许有点难以理解,建议多读几遍。毕竟读一遍也就三分钟而已。

推荐阅读

睡在我上铺的室友用python,一个月挣了我一学期的生活费

010Editor实战:5分钟破解Zip伪加密文件(附BUUCTF真题解析) 本文详细介绍了如何使用010Editor快速破解Zip伪加密文件,包括BUUCTF真题的完整解析。通过修改关键字节,轻松解除伪加密状态,适用于CTF竞赛和实际工作场景,提升文件处理效率。 阅读详情

相关推荐

ubuntu20.4源码安装最新gcc(gcc V12.2)

Ubuntu20.4自带的gcc为V9.4.0的版本,老版本的gcc存在不支持新版本C语言规范,在配置、编译、安装应用软件或工具时,可能存在不能正确安装的问题。(比如:libpqxx-7.7.4在配置时要求c++17版本的支持,但gcc V9.4.0版本不支持c++17)。因此本文介绍ubuntu20.4的系统下载最新gcc12.2版本源码,并进行本地编译、安装。本节内容包括gcc12.2的必备库安装和gcc12.2安装两部分内容组成。

q544344318的博客 1万+

python Mixin混入模式

【代码】python Mixin混入模式。

weixin_42241051的博客 547

博图HMI多语言文本列表一键生成攻略:从Excel模板到TIA Portal的完整流程

本文详细介绍了如何利用Excel模板和TIA Portal API实现博图HMI多语言文本列表的一键生成。通过标准化Excel模板设计、解析TIA Portal的XML结构,并结合C#代码实现自动化导入,大幅提升多语言项目的开发效率。特别适用于需要支持多语言版本的自动化设备HMI界面开发。

weixin_26934905的博客 219

Python动态性、混入机制(绑定函数到实例对象types.MethodType(method,obj))

Tesla.addoil=types.MethodType(addoil,Tesla)#动态给对象增加成员方法!#当我们需要将一个函数绑定到特定对象上,使其成为对象的方法时,可以使用types.MethodType。混入机制:动态为自定义类和对象 增加 数据成员和成员方法:python动态类型。#将 addoil 函数绑定到对象上:比如传统汽车要加油就绑定。Tesla.name="Tesla"#动态添加实例对象属性。Tesla.addoil(100)#调用绑定方法。需要定义些独立的行为,

hi_testgirl的博客 320

海思ISP调优实战:从实验室到真实场景的IPC相机图像质量优化指南

本文深入探讨海思ISP调优在IPC相机图像质量优化中的实战应用,从实验室标定到真实场景部署的全链路调优方法。重点解决光照动态范围、色温变化和噪声特性等核心问题,提供AE权重表配置、CCM标定、3DNR时域滤波等关键技术方案,帮助实现从理论到实践的图像质量提升。

s3t4u的博客 751

IMU660RA姿态解算实战:从传感器滤波到欧拉角输出的完整实现

本文详细介绍了IMU660RA姿态解算的完整实现过程,从传感器滤波到欧拉角输出。通过实战案例和代码示例,展示了如何有效处理陀螺仪和加速度计的噪声问题,并选择合适的算法进行数据融合和姿态解算。特别强调了欧拉角输出中的坐标系对齐和动态补偿技巧,帮助工程师快速掌握IMU660RA的应用。

weixin_42524762的博客 388

Python学习之面向对象3(混入)

因此 他继承了Mysubclass类的属性和方法, M这个类 是LoggerMix的子类和Display的子类。因此他继承了上述两个父类。调用.display函数,在M类里面每一,因此首先他到父类里面查找。super().log遍历到loggerMIX类的log函数于是就等于创建一个 subclass为名的txt 里面写入message即this is a test。第二个里面displa函数1是super().但 loggerMIX没有父类存在此函数,因此她调用self.log(message)。

weixin_55322304的博客 160

从零到一:RF-DETR如何通过神经架构搜索重塑实时目标检测的边界

RF-DETR通过创新的权重共享神经架构搜索(NAS)机制,重新定义了实时目标检测的技术边界。这项技术在COCO等基准测试中表现卓越,成为首个AP超过60的实时检测器,同时保持跨领域稳定性和高效推理速度。RF-DETR的动态架构调整能力使其能够适应从嵌入式设备到云端服务器的各种硬件环境,为工业质检、自动驾驶等场景提供灵活解决方案。

weixin_29061531的博客 470

名词(术语)了解--Mixin(混入)

Mixin 是一种代码复用的设计模式可以在不使用继承的情况下实现代码共享通常作为功能模块注入到其他类中不应该被实例化,而是作为功能扩展使用Mixin 是一种强大的代码复用机制需要谨慎使用,避免过度复杂化遵循单一职责原则保持良好的文档和命名规范考虑维护性和可测试性。

weixin_40539956的博客 1555

【CVPR 2025】清华:注意力状态空间模块,Mamba与注意力的超强组合,即插即用!

MambaIRv2提出了一种创新的图像恢复模型,通过引入注意力状态空间模块(ASSM)解决了Mamba模型因果建模限制问题。该模型结合语义引导邻域机制和注意力状态空间方程,实现了非因果建模,有效缓解了长距离衰减问题。实验表明,MambaIRv2在图像超分辨率、JPEG压缩伪影减少和图像去噪等任务中表现优异,参数更少但性能超越现有方法。

qq_43303160的博客 3041

〔重庆理工大学〕大学物理实验--变温霍耳效应及其参数测定

每个老师要求不同,实验报告内容和数据仅供参考。

Pretty Boy Fox的博客 3044

python 混入类MixIn

写在前面 能把一件事情说的那么清楚明白,感谢廖雪峰的官方网站。 1.为什么要用混入类?(小白入门) 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。 step1: 回忆一下Animal类层次的设计,假设我们要实现以下4种动物: Dog - 狗狗; Bat - 蝙蝠; Parrot - 鹦鹉; Ostrich - 鸵鸟。 step2: 如果按照哺乳动物和鸟类归类,我们可以设计出这样的类的层次: step3: 但是如果按照“能跑...

qq_42533216的博客 634

phpMyAdmin | mysqli::real_connect(): (HY000/2002): No such file or directory

第一次安装宝塔mysql服务是默认关闭的,需要手动打开,打开服务再次进入phpMyAdmin发现可以进入了。

吻等离子的博客 2876

AI时代程序员不可替代的四大核心能力

程序员是否会被AI取代?这一问题本质是关于软件工程中‘人机协作边界’的技术认知升级。从代码生成、理解、调试到架构设计,AI已深度嵌入开发全链路,但其能力始终受限于上下文建模、业务责任承担与模糊需求翻译等根本瓶颈。真正决定开发者价值的,是需求翻译能力——将‘用户爽感’转化为可执行约束;是工程权衡力——在预算、合规、性能与团队能力间动态取舍;是隐性知识沉淀——把老工程师的‘心头一紧’变成可追溯的决策图谱;更是AI增强型调试与Prompt工程等新一代实践技能。这些能力共同构成AI无法复制的人类护城河,也是当前招聘

weixin_30522095的博客 482

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

Tokengeist:实现多智能体对话贡献度追踪与思想溯源

在多智能体协作系统中,可解释性是衡量其可靠性与价值的关键。其核心原理在于通过细粒度的贡献度追踪,将黑箱协作过程转化为透明的决策图谱。这项技术能显著提升系统的调试效率、优化协作流程,并增强最终输出的可信度。在代码审查、联合开发、任务分解与模拟辩论等应用场景中,清晰的贡献图谱尤为重要。本文介绍的Tokengeist方法论,正是通过构建对话状态管理、Token级注解引擎、贡献图谱构建器等核心组件,并采用Span级追踪与轻量侵入式集成,系统性地解决了多轮、多智能体对话中的思想溯源难题,让智能体间的每一次‘发言’都有

chuange6363的博客 404

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

编程技巧知识补充集锦

小知识

riversu 341

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python Mixin技术介绍

1. Mix-in技术介绍 Mixin可以译为混入,就是在不改变原对象的情况下对其进行扩展。本文介绍了在 Python 语言中,如何实现Mixin技术,及安装的相应技巧。 1.1. 什么是Mix-in技术 Mix- in技术,中文不知道应该如何称呼,但意思好象是混入。它的作用是,在运行期间,动态改变类的基类或类的方法,从而使得类的表现可以发生变化。可以用在一 个通用类接口中,根据不同的选择使用...

weixin_30780221的博客 267

python 中Mixin混入类的用法

Mixin混入也可以说是编程模式,并不是什么新的语法,用好混入类可以使自己的代码结构清晰,功能明了,所以以后在设计类时要多考虑使用Mixin混入类的实现方式。

npm_run_dev__的博客 612

Vue中的mixin语法

1.mixin语法 mixin就是在组件中混入数据的语法 mixin混入组件里没有数据的时候会使用混入的数据 组件data优先级高于mixindata优先级 如果是生命周期函数先执行mixin里面的再执行组件里面的 methods里面的情况和data里面的情况一样 2.局部mixin const app = Vue.createApp({ data() { return { numb...

Ghost__H的博客 519

css中的mixin及其用法

一、mixin是什么? @mixin是一种简化代码的方法,能够提高代码的重复使用率。 二、mixin的用法 mixin定义(使用@mixin定义): @mixin hexagon-generator($hexagon-width, $factor, $border-radius){ display: inline-block; border-radius: 50%; widt...

liya_nan的博客 1万+

vue--mixin(混入)语法

公共部分: <div id="root"></div> <script src="https://unpkg.com/vue@next"></script> a.组件data优先级高于mixindata优先级: <script> //局部 mixin const myMixin = { data() { return { num...

小白小白从不日别的博客 1380

Python Mixin 混入方式实现单例

最近学习单例以及继承,写了一个以混入方式实现单例,代码如下: class Singleton_MiXin: '''混入方式继承单例,部分无效''' _lock = Lock() def __new__(cls, *args, **kwargs): if not hasattr(cls, "_instance"): with cls._lock: if not hasattr(cls, "_insta...

268

Python继承、super及混入类

Python继承、super及混入类 文章目录Python继承、super及混入类一、Python 的继承1. 继承的本质2. MRO和C3算法3. 钻石继承(棱形继承问题)二、混入类Mixin构造1. 什么是super2.所以,super能做什么?3. Python Mixin 又是什么?4. Mixin又能做什么?参考链接: 一、Python 的继承 1. 继承的本质 ​  广义的世界中:...

tony tan的博客 586

Python3学习(25)--多继承之mix-in("混入")技术

前面,我们学习过OOP的继承,知道子类可以继承父类的特性,可以拿来用,也可以改变父类的特性变为已有,当然,我们只是学习了一种继承关系,今天,我们要重新认识一下Python的继承之 多继承 静态语言中,C++支持多继承,一个子类可以拥有多个父类,但是对于Java来说,就不行了,Java只能实现单继承,但是Java可以巧妙的利用实现多个接口(interface),内之类

Appleyk的专栏 1万+

sass/scss语法@mixin

css新增HSL颜色模式,h色调(360度圆盘),s饱和度(百分比),l亮度(百分比) eg.   p{ color:hsl(270,100%,100%); } sass支持hsl属性,如果直接在css中使用hsl属性,ie678不支持此属性,因此通过sass可以完美解决hsl浏览器兼容问题 可重用的代码块,称为mixin: 可通过@include,@extend调用 eg: @

VarIInJSon的博客 6432

当 Python 中混进一只薛定谔的猫……

作者 | 豌豆花下猫 责编 | 胡巍巍 Python 是一门强大的动态语言,那动态体现在哪里,强大又体现在哪里呢? 除了好的方面,Python 的动态性是否还藏着一些使用陷阱呢,有没有办法识别与避免呢? 沿着它的动态特性话题,笔者有几篇文章依次探及了:动态修改变量、动态定义函数、动态执行代码等内容,然而,当混合了变量赋值、动态赋值、命名空间、作用域、函数的编译原理等等内容时,问题就...

程序人生的博客 396
上一篇: 长见识了,字节跳动整理的python中文指南,电子版终于开放了
下一篇: 在银行存500万,能辞职靠利息舒服的活下去吗?NO
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2841原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值