要编写的类是另一个现成类的特殊版本,可使用继承继 。
一个类继承继 另一个类时,它将自动获得另一个类的所有属性和方法;
原有的 类称为父类父 ,而新类称为子类子 。
子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
class Car():#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()
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
class ElectrivCar(Car):#定义子类时,必须在括号内指定父类的名称;父类必须包含在当前文件中,且位于子类前面。
def __init__(self,make,model,year):
super().__init__(make,model,year)#初始化父类属性,,这行代码让 Python 调用 ElectricCar 的父类的方法 __init__() ,让 ElectricCar 实例包含父类的所有属性。父类也称为 超类 ( superclass ),名称 super
my_tesla = ElectrivCar('tesla','model s',2016)
print(my_tesla.get_descriptive_name())
print("*********************")
让一个类继承另一个类后,可添加区分子类和父类所需的新属性和方法,
class Car():
--snip--
class ElectrivCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery_size=70#添加了新属性 self.battery_size ,并设置其初始值
def describe_battery(self):
print("This car has a "+str(self.battery_size)+"-kwh battery.")
在使用父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写:
def ElectrivCar(Car):
--snip--
def fill_gas_tank():#对方法进行重新
print("This car donesn't need a gas tank!")
使用继承时,可让子类保留从父类哪里继承而来的长处,并提出不需要的短处
网友评论