class Car():
def __init__(self,make,model,year):
'''以self为前缀的变量都可供类中的所有方法使用,还可以通过类的任何实例来访问这些变量。
可以将self理解为制作原料,方法为制作图纸。用户只需要传入数据,python会自动利用原料self
和图纸制作出用户想要的“实例”。'''
#初始化属性(以下四行)
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0 #给属性指定默认值,也可以在形参中指定
def get_descriptive_name(self):
message = str(self.year) + ' ' + self.make +' ' + self.model
return message.title()
def read_odometer(self):
print('This car has ' + str(self.odometer_reading) + 'miles on it.')
#修改属性的值可以1.直接修改属性值,如(实例名.odometer_reading = 新值)
def update_odometer(self,mileage):#2.也可以通过方法修改属性值
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print('You can\'t roll back an mileage.')
def increase_odometer(self,miles): #3.还可以通过方法对属性在原有数值的基础上修改
self.odometer_reading += miles #‘+=’是指新值为两个值之和,如(a += b ) = a 新值
def fill_gas_tank(self):
print('Yes,gas is necessary!')
class Battery():
def __init__(self,battery_size=70):
self.battery_size = battery_size
def describe_battery(self):
print('This car has a ' + str(self.battery_size) + '-KWH battery,')
class ElectricCar(Car):#继承
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery = Battery()#拾遗
def fill_gas_tank(self): #重写父类:假设父类中有这个方法,它对电动车毫无意义,可以通过这种方法重写。
print('This car doesn\'t need a gas tank!')