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!')