Python设计模式

第一章: 设计模式基础

第二章: 常用设计模式

首页 > Python设计模式 > 第二章: 常用设计模式 > 2.8节: Mixin模式

2.8节: Mixin模式

薯条老师 2021-10-06 16:46:37 210599 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

2.8.1 Mixin模式

mixin是混入的意思,设计模式中的mixin表示混入一个新的基类,来为子类提供可选择的接口。

2.8.2 理解Mixin

不能将Mixin模式简单地理解为多继承,我们需从其语义的不同来进行区分。继承需满足is-a关系,即子类与父类是同一类事物,比如阿拉斯加是狗。Mixin模式用来为子类提供可选择的接口,例如某一只阿拉斯加学会了抓老鼠,抓老鼠的行为肯定不是从狗中继承的,此时可通过Mixin模式来合理组织代码结构。

2.8.3 源码实现

# __author__ = 薯条老师,微信公众号:薯条编程
"""
mixin是混入的意思,设计模式中的mixin表示混入一个新的基类,来为子类提供可选择的接口。
不能将Mixin模式简单地理解为多继承,我们需从其语义的不同来进行区分。
"""

import abc

"""
(1) 定义一个抽象基类Dog
"""
class Dog(abc.ABC):
    @abc.abstractmethod
    def bark(self):
        """ """
        
"""
(2) 定义一个抽象基类CatchMiceMixin,用来为dog的子类提供可选择的接口:狗拿耗子 
"""
class CatchMiceMixin(abc.ABC):
    @abc.abstractmethod
    def catch_mice(self):
        """ """
        
"""
(3) 为Alaska类混入一个CatchMiceMixin,来实现狗拿耗子。
为有别于具备is-a关系的基类,混入类的类名通常会带一个Mixin的后缀
"""
class Alaska(Dog,  CatchMiceMixin):
    def bark(self):
        print("I  can catch mice!!!")
        
        
    def catch_mice(self):
        print("A dog catching mice meddles in cats' Business")
        
        
class Samoyed(Dog):
    def bark(self):
        print("I  am  so  sad that  I  can't catch mice")
        
        
if __name__ == "__main__":
    lisa = Alaska()
    lisa.catch_mice()
    kitty = Samoyed()
    kitty.bark()

2.8.4 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4)
Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:


欢迎 发表评论: