multi.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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()