python类继承
2021-03-04 19:28
标签:icc 帮助 car class 类继承 span long ack this 3.创建子类特殊属性和方法 #不定义初始值的方法 python类继承 标签:icc 帮助 car class 类继承 span long ack this 原文地址:https://www.cnblogs.com/youngyounglady/p/14345899.html#类是另一个类的特殊版本,可以使用继承。一个类继承另一个类时会自动获得另一个类的所有属性和方法。原来的类称为父类,新类称为子类。
#同时新类可以定义自己的属性和方法
#子类的方法:__init__()
#super()是特殊函数,帮助python将父类和子类关联起来,这行代码让python调用父类的方法__init__(),让子类包含父类所有属性。
1.创建父类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):
# print(str(self.make)+" "+self.model+‘ ‘ + self.year)
long_name=str(self.make)+" "+self.model+‘ ‘ + str(self.year)
return long_name
def read_odometer(self):
print("this car has" + str(self.odometer_reading)+"miles on it.")
def update_odometer(self, mileage):
if mileage >= self.odometer_reading:
self.odometer_reading=mileage
else:
print("you can‘t roll back an odometer")
def increment_odometer(self,miles):
self.odometer_reading+=miles
2.创建子类
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year) #super()是特殊函数,帮助python将父类和子类关联起来,
#调用子类
my_bmw=ElectricCar(‘bma‘,‘model x99‘,2099)
print(my_bmw.get_descriptive_name()) #bma model x99 2099class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery_size=70 #类中的每个属性都必须有初始值,如果在方法__init__中制定初始值,就无需包含形参
def describe_battery(self):
print("this car has a" + str(self.battery_size) + "-kwh battery.")
my_bmw=ElectricCar(‘bma‘,‘model x99‘,2099)
print(my_bmw.get_descriptive_name()) #bma model x99 2099
my_bmw.describe_battery() #this car has a70-kwh battery.
class ElectricCar(Car):
def __init__(self,make,model,year,battery_size):
super().__init__(make,model,year)
self.battery_size= battery_size #类中的每个属性都必须有初始值,如果在方法__init__中制定初始值,就无需包含形参
def describe_battery(self):
print("this car has a" + str(self.battery_size) + "-kwh battery.")
my_bmw=ElectricCar(‘bma‘,‘model x99‘,2099,70)
print(my_bmw.get_descriptive_name()) #bma model x99 2099
my_bmw.describe_battery() #this car has a70-kwh battery.
4.子类重写父类方法,父类的一些属性子类不需要可以重写父类
class ElectricCar(Car):
def fill_gas_tank(self):
print("this car doesn‘t need a gas tank") #会跳过父类的方法执行子类重写的方法