我们创建一个汽车类Car 初始化方法中传入汽车厂商,型号,年份class Car():
"""汽车类"""
def __init__(self,make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回汽车的描述性信息"""
long_name = str(self.year)
+ ' ' + self.make
+ ' ' + self.model
return long_name.title()
from Car import*
myCar = Car('本田','飞度',2018)
print(myCar.get_descriptive_name())
其中里程属性self.odometer_reading= 0
这个属性不需要再构造方法中传入值进行初始化。因为它有默认值0
另外我们添加了一个方法来打印历程表
其中里程属性self.odometer_reading= 0
这个属性不需要再构造方法中传入值进行初始化。因为它有默认值0
另外我们添加了一个方法来打印历程表def read_odometer(self):
"""打印一条指出汽车里程的消息"""
print("这里车已经跑了 " + str(self.odometer_reading) + "公里.")
修改属性值
可以以三种不同的方式修改属性的值:
直接通过实例进行修改; 通过方法进行设置; 通过方法进行递增( 增加特定的值) 。
1直接修改属性的值
要修改属性的值, 最简单的方式是通过实例直接访问它。
下面的代码直接将里程表读数设置为2514:
from Car import *
myCar = Car('丰田','卡罗拉',2018)
print(myCar.odometer_reading)
myCar.odometer_reading = 2514
print(myCar.odometer_reading)
2通过方法修改属性的值
通过方法修改,这样,
你就无需直接访问属性, 而可将值传递给一个方法, 由它在内部进行更新
def
update_odometer(self,mileage):
"""将里程表读数设置为指定的值"""
self.odometer_reading = mileage
myCar.update_odometer(2654)
print(myCar.odometer_reading)
添加对修改里程的方法约束 禁止把数据往回调
def update_odometer(self, mileage):
"""将里程表读数设置为指定的值"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("你不能把里程往回调!")
3. 通过方法对属性的值进行递增
有时候需要将属性值递增特定的量,
而不是将其设置为全新的值。
因为有些时候我们不知道它原来的值是多少。我们只直到我们产生的新值是多少。比如里程。因为是我们开了多少公里
就递增多少公里。
def increment_odometer(self, miles):
"""将里程表读数增加指定的量"""
self.odometer_reading += miles
当我们开动车开了15公里后 应调用改方法 递增15
myCar.increment_odometer(15)
myCar.read_odometer()
另外这个方法还有的改进 防止传入负数。
from Car import*
myCar = Car('丰田','卡罗拉',2018)
print(myCar.odometer_reading)
myCar.odometer_reading = 2514
print(myCar.odometer_reading)
myCar.update_odometer(2654)
print(myCar.odometer_reading)
myCar.increment_odometer(15)
myCar.read_odometer()