Mixin
class Document:
def __init__(self,content):
self.t=content
def print(self):
print(self.t)
class Pdf(Document):pass
class PrintableMixin:
def print(self):
print('PrintableMixin {}'.format(self.t))
class PrintablePdf(PrintableMixin,Pdf,):pass
print(PrintablePdf.mro())
pdf=PrintablePdf('bnm\nuiop')
print(pdf.__dict__)
pdf.print()
class PrintableMixin:
def print(self):
print(self.content,"mixin")
class Document:
def __init__(self,content):
self.content=content
class Word(Document):pass
class Pdf(Document):pass
class PrintableWord(PrintableMixin,Word):pass
print(PrintableWord.__dict__)
print(PrintableWord.__mro__)
pw=PrintableWord('bnm')
pw.print()
class SuperPrintableMixin(PrintableMixin):
def print(self):
print('@'*30)
super().print()
print('~'*30)
class SuperprintablePdf(SuperPrintableMixin,Pdf):pass
print(SuperprintablePdf.__dict__)
print(SuperprintablePdf.mro())
spp=SuperprintablePdf('Super print Pdf')
spp.print()
Mixin:
本质上就是多继承实现的,体现是一种组合设计模式
在面向对象的设计中,一个复杂的类,往往需要很多功能,而这些功能有来自不同的类提供,这就需要很多类组合在一起
Mixin类使用原则
- Mixin类中,不应该显式出现__init__初始化方法
- Mixin类通常不能独立工作,因为它是混入别的类中增强部分功能
- Mixin类的祖先也应该是Mixin类
- 使用时,Mixin类通常在继承列表的第一个位置,例如class PrintableWord(PrintableMixin,Word):pass
- Mixin类和装饰器都可以使用,如果还需要继承就得使用Mixin类
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律