笔记-关于mixin的理解

我理解mixin就是用多继承利用mro的顺序来实现类似装饰器的功能。

现有A类封装了一个a方法

class A:

  def a(self):

    pass

B类想使用A类中封装的方法,就去继承A类

class B(A):

  pass

b=B()

b.a()

但是有时a方法并不能完全满足要求,或者只能实现一部分功能,又不能直接去修改A类,这时就可以再写一个C类

class C():

  def a(self):

    print('do something')

    supper().a() 

    print('do something')

然后让B先继承C再继承A

class B(C,A):

  pass

b = B()

b.a()         #这时因为mro中C在A前面,所以b调用的是C中的a方法,C中的supper().a()去调用A的a方法

 

posted @ 2020-07-25 12:57  大牛等等我  阅读(147)  评论(0编辑  收藏  举报