""" 对象之间的依赖关系和运算符重载 Version: 0.1 Author: 骆昊 Date: 2018-03-12 """ class Car(object): def __init__(self, brand, max_speed): self._brand = brand self._max_speed = max_speed self._current_speed = 0 @property def brand(self): return self._brand def accelerate(self, delta): self._current_speed += delta if self._current_speed > self._max_speed: self._current_speed = self._max_speed def brake(self): self._current_speed = 0 def __str__(self): return '%s当前时速%d' % (self._brand, self._current_speed) class Student(object): def __init__(self, name, age): self._name = name self._age = age @property def name(self): return self._name # 学生和车之间存在依赖关系 - 学生使用了汽车 def drive(self, car): print('%s驾驶着%s欢快的行驶在去西天的路上' % (self._name, car._brand)) car.accelerate(30) print(car) car.accelerate(50) print(car) car.accelerate(50) print(car) def study(self, course_name): print('%s正在学习%s.' % (self._name, course_name)) def watch_av(self): if self._age < 18: print('%s只能观看《熊出没》.' % self._name) else: print('%s正在观看岛国爱情动作片.' % self._name) # 重载大于(>)运算符 def __gt__(self, other): return self._age > other._age # 重载小于(<)运算符 def __lt__(self, other): return self._age < other._age if __name__ == '__main__': stu1 = Student('骆昊', 38) stu1.study('Python程序设计') stu1.watch_av() stu2 = Student('王大锤', 15) stu2.study('思想品德') stu2.watch_av() car = Car('QQ', 120) stu2.drive(car) print(stu1 > stu2) print(stu1 < stu2)