82 lines
1.9 KiB
Python
82 lines
1.9 KiB
Python
|
"""
|
||
|
对象之间的依赖关系和运算符重载
|
||
|
|
||
|
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)
|