首页 > 分享 > Python入门笔记—第十章【面向对象之OOP(第四部分,MiXin)】

Python入门笔记—第十章【面向对象之OOP(第四部分,MiXin)】

1 Mixin概念及作用

- 解决多重继承出现的问题

- 给一个类增加多个功能,在设计类时不再优先考虑通过复杂的多重继承机制,而是优先考虑通过多重继承来组合多个Mixin功能

假设要设计以下4种动物的类:

Dog::狗

Bat:蝙蝠

Parrot:鹦鹉

Ostrich:鸵鸟

- 按照哺乳动物和鸟类可按下面的形式划分

- 区分其中能跑和能飞的动物可按照下面形式划分:

- 按照能跑的哺乳类和能飞的哺乳类,能跑的鸟类和能飞的鸟类来划分,可按如下形式

- 如果再在类别中增加宠物类和非宠物类,那么就分类的量而言会呈指数的形式上升

- 因此,正确的做法是采用多重继承

class Animal():

pass

class Mammal(Animal):

pass

class Bird(Animal):

pass

class Dog(Mammal):

pass

class Bat(Mammal):

pass

class Parrot(Bird):

pass

class Ostrich(Bird):

pass

- 在设计类的关系时,通常主线都是单一的继承下来的。例如Dog继承自MammalParrot继承自Bird。但是,如果需要额外"混入"其他的功能,通过多重继承就能实现。例如,让Dog继承自Mammal外,同时再具有Runnable的功能,这种设计思想称之为Mixin

- 为了能够更好的看出继承关系,通常写成RunnableMixin的形式。类似的还可以定义肉食性动物CarnivorousMixin和植食性动物HerbivoresMixin

class Animal():

pass

class Mammal(Animal):

pass

class RunnableMixin():

print("Running")

class FlyableMixin():

print("Flying")

class CarnivorousMixin():

print("Eating meat")

class HerbivoresMixin():

print("Eating vagetables")

class Dog(Mammal,RunnableMixin,CarnivorousMixin):

pass

class Parrot(Bird,Flyable,HerbivoresMixin):

pass

2 使用Mixin注意事项以及优点

2.1 注意事项

- 表示单一的功能,而不是某个物品或者说某个类别,注重功能性

- 职责单一,如果需要多个功能,则写多个Mixin

- 子类即使没有继承这个Mixin类,也能照常工作,只是缺少了某个功能

2.2 优点

- 可以在不对类进行修改的情况下,对类的功能进行扩展

- 可以方便的阻止和维护不同功能组件的划分

- 可以根据需要任意调整功能的组合

- 可以避免创建很多新的类,导致复杂的继承关系

本文参考于:廖雪峰以及图灵学院

相关知识

Python入门笔记—第十章【面向对象之OOP(第四部分,MiXin)】
Python实现宠物医院基础功能
使用面向对象思想设计电子宠物系统
案例驱动式Python学习笔记【第六篇】电子宠物
初识面向对象(猫咪项目)
Python学习笔记 2020.10.1
Python笔试题
Python基于大数据技术的宠物商品信息比价及推荐系统
Python爬虫实战:获取宠物领养信息和照片
计算机毕业设计django基于python的宠物分享网站

网址: Python入门笔记—第十章【面向对象之OOP(第四部分,MiXin)】 https://m.mcbbbk.com/newsview147490.html

所属分类:萌宠日常
上一篇: 养珍珠鸟必备知识:让你的小家伙健
下一篇: 活动招募