我学习的时候,有2个模块,模块electric_car中继承了模块car中的Car类。为何我在运行模块car时连模块electric_car中Car类之外的代码都一起运行了呢,有解释吗。
运行模块electric_car的理想结果:
这辆车的电瓶容量是75Ah。
但是,运行模块electric_car的实际结果:
这辆车已跑了100公里。
这辆车的电瓶容量是75Ah。
模块car:
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):
"打印汽车信息"
long_name = f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
"打印汽车里程"
print (f"这辆车已跑了{self.odometer_reading}公里。")
def update_odometer(self, meter):
"更新汽车里程,并禁止将里程回调"
if meter >= self.odometer_reading:
self.odometer_reading = meter
else:
print ("禁止回调汽车里程数。")
def increment_odometer(self, miles):
"将里程表读数增加指定的量"
self.odometer_reading += miles
my_new_car = Car('audi', 'a4', 2019)
my_new_car.increment_odometer(100)
my_new_car.read_odometer()
模块electric_car:
from car import Car
class Battery:
"电动汽车电瓶"
def __init__(self, battery_size=75):
"
电动车电瓶属性:
电瓶规格默认75Ah(安时)
"
self.battery_size = battery_size
def describe_battery(self):
"打印一条描述电瓶容量的消息"
print (f"这辆车的电瓶容量是{self.battery_size}Ah。")
class ElectricCar(Car):
"电动汽车类,继承汽车类"
def __init__(self, make, model, year):
"
初始化父类的属性;
添加子类特有的属性:电瓶
"
super().__init__(make, model, year)
self.battery = Battery()
def describe_battery(self):
"打印电动车电瓶容量"
print (f"有一个 {self.battery_size}-kwh的电瓶")
my_tesla = ElectricCar('tesla', 'model s', 2019)
my_tesla.battery.describe_battery()