multi.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. """
  2. 多重继承
  3. - 通过多重继承可以给一个类的对象具备多方面的能力
  4. - 这样在设计类的时候可以避免设计太多层次的复杂的继承关系
  5. Version: 0.1
  6. Author: 骆昊
  7. Date: 2018-03-12
  8. """
  9. class Father(object):
  10. def __init__(self, name):
  11. self._name = name
  12. def gamble(self):
  13. print('%s在打麻将.' % self._name)
  14. def eat(self):
  15. print('%s在大吃大喝.' % self._name)
  16. class Monk(object):
  17. def __init__(self, name):
  18. self._name = name
  19. def eat(self):
  20. print('%s在吃斋.' % self._name)
  21. def chant(self):
  22. print('%s在念经.' % self._name)
  23. class Musician(object):
  24. def __init__(self, name):
  25. self._name = name
  26. def eat(self):
  27. print('%s在细嚼慢咽.' % self._name)
  28. def play_piano(self):
  29. print('%s在弹钢琴.' % self._name)
  30. # 试一试下面的代码看看有什么区别
  31. # class Son(Monk, Father, Musician):
  32. # class Son(Musician, Father, Monk):
  33. class Son(Father, Monk, Musician):
  34. def __init__(self, name):
  35. Father.__init__(self, name)
  36. Monk.__init__(self, name)
  37. Musician.__init__(self, name)
  38. son = Son('王大锤')
  39. son.gamble()
  40. # 调用继承自Father的eat方法
  41. son.eat()
  42. son.chant()
  43. son.play_piano()