car2.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. """
  2. 属性的使用
  3. - 使用已有方法定义访问器/修改器/删除器
  4. Version: 0.1
  5. Author: 骆昊
  6. Date: 2018-03-12
  7. """
  8. class Car(object):
  9. def __init__(self, brand, max_speed):
  10. self.set_brand(brand)
  11. self.set_max_speed(max_speed)
  12. def get_brand(self):
  13. return self._brand
  14. def set_brand(self, brand):
  15. self._brand = brand
  16. def get_max_speed(self):
  17. return self._max_speed
  18. def set_max_speed(self, max_speed):
  19. if max_speed < 0:
  20. raise ValueError('Invalid max speed for car')
  21. self._max_speed = max_speed
  22. def __str__(self):
  23. return 'Car: [品牌=%s, 最高时速=%d]' % (self._brand, self._max_speed)
  24. # 用已有的修改器和访问器定义属性
  25. brand = property(get_brand, set_brand)
  26. max_speed = property(get_max_speed, set_max_speed)
  27. car = Car('QQ', 120)
  28. print(car)
  29. # ValueError
  30. # car.max_speed = -100
  31. car.max_speed = 320
  32. car.brand = "Benz"
  33. print(car)
  34. print(Car.brand)
  35. print(Car.brand.fget)
  36. print(Car.brand.fset)