dependency.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. """
  2. 对象之间的依赖关系和运算符重载
  3. Version: 0.1
  4. Author: 骆昊
  5. Date: 2018-03-12
  6. """
  7. class Car(object):
  8. def __init__(self, brand, max_speed):
  9. self._brand = brand
  10. self._max_speed = max_speed
  11. self._current_speed = 0
  12. @property
  13. def brand(self):
  14. return self._brand
  15. def accelerate(self, delta):
  16. self._current_speed += delta
  17. if self._current_speed > self._max_speed:
  18. self._current_speed = self._max_speed
  19. def brake(self):
  20. self._current_speed = 0
  21. def __str__(self):
  22. return '%s当前时速%d' % (self._brand, self._current_speed)
  23. class Student(object):
  24. def __init__(self, name, age):
  25. self._name = name
  26. self._age = age
  27. @property
  28. def name(self):
  29. return self._name
  30. # 学生和车之间存在依赖关系 - 学生使用了汽车
  31. def drive(self, car):
  32. print('%s驾驶着%s欢快的行驶在去西天的路上' % (self._name, car._brand))
  33. car.accelerate(30)
  34. print(car)
  35. car.accelerate(50)
  36. print(car)
  37. car.accelerate(50)
  38. print(car)
  39. def study(self, course_name):
  40. print('%s正在学习%s.' % (self._name, course_name))
  41. def watch_av(self):
  42. if self._age < 18:
  43. print('%s只能观看《熊出没》.' % self._name)
  44. else:
  45. print('%s正在观看岛国爱情动作片.' % self._name)
  46. # 重载大于(>)运算符
  47. def __gt__(self, other):
  48. return self._age > other._age
  49. # 重载小于(<)运算符
  50. def __lt__(self, other):
  51. return self._age < other._age
  52. if __name__ == '__main__':
  53. stu1 = Student('骆昊', 38)
  54. stu1.study('Python程序设计')
  55. stu1.watch_av()
  56. stu2 = Student('王大锤', 15)
  57. stu2.study('思想品德')
  58. stu2.watch_av()
  59. car = Car('QQ', 120)
  60. stu2.drive(car)
  61. print(stu1 > stu2)
  62. print(stu1 < stu2)