一个类(子类)继承另一个类(父类/超类)时,它将自动获得另一个类的所有属性和方法,同时还可以定义自己的属性和方法。
话不多说,看例题:
例:
创建一个Car类包括:
属性:制造商、型号、生产年份、里程表读数(初始值为0)
方法:返回car的属性描述信息、打印car的里程表读数、将里程表读数设置为指定的值、将里程表读数增加指定的值
创建一个Battery类包括:
属性:电动汽车电瓶的容量
方法:打印一条电瓶容量的消息、打印电瓶的续航里程
创建一个ElectricCar类:它具备Car类的所有属性和方法,并且ElectricCar特有Battery类所有的属性和方法
1、创建Car类
# 创建Car类
class Car():
def __init__(self, make, model, year):
"""初始化描述car的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0 #默认设置里程表读数为0
def get_descriptive_name(self):
"""返回整洁的描述信息"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name
def read_odmeter(self):
"""打印car的里程信息"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
def updata_odometer(self, mileage):
"""将car的里程信息设置为指定的值,禁止里程表读数小于原来的"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can roll back an odometer!")
def increment_odometer(self, miles):
"""将里程表读数增加指定的值"""
self.odometer_reading += miles
2、创建Battery类
class Battery():
def __init__(self, battery_size=70):
"""初始化描述Battery的属性"""
self.battery_size = battery_size
def describe_battery(self):
"""打印Battery电池容量的信息"""
print("This car has a " + str(self.battery_size) + "-kWh battery.")
def get_range(self):
"""打印Battery续航里程的信息"""
if self.battery_size == 70:
battery_range = 240
elif self.battery_size == 85:
battery_range = 270
message = "This car can go approximately " + str(battery_range)
message += " miles on a full charge."
print(message)
3.创建ElectricCar类,继承Car类,并且将Battery类的实例作为ElectricCar类的属性
class ElectricCar(Car):
"""初始化描述ElectricCar的属性"""
def __init__(self, make, model, year):
super().__init__(make, model, year) #初始化父类的属性
self.battery = Battery() #Battery类作为ElectricCar类特有的属性,并将它实例化
4.方法调用:
(1)将ElectricCar实例化为my_tesla:
my_tesla = ElectricCar('tesla', 'model s', 2016)
(2)调用get_descriptive_name()方法,返回实my_tesla的名称描述:
print(my_tesla.get_descriptive_name())
(3)调用describe_battery()方法,打印my_tesla的电池容量信息:
my_tesla.battery.describe_battery()
(4)调用get_range()方法,打印my-tesla的电池续航里程信息:
my_tesla.battery.get_range()