CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
jackfrued

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

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