python 继承/父类和子类的关系

# <editor-fold desc="父类和子类关系,继承">
# <editor-fold desc="类--讲解--Car">

class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year =year
self.meter=0
def get_car_desc(self):
long_name=str(self.year)+' '+self.model+' '+self.make
return long_name
def read_meter(self): #读取公里数的方法
print("This car have "+str(self.meter)+" mi")
def update_meter(self,mileage): #定义了一个修改公里数的方法,以后要修改公里数的时候,就不需要通过实例化修改属性的值了
self.meter=mileage
def increment_meter(self,miles): #新增加的公里数,做加法运算
self.meter+=miles
my_car=Car('china','Audi',2010)
# print(my_car.model)
# print(my_car.get_car_desc().title())
# my_car.read_meter()
# my_car.meter=50 #通过实例化对属性的值做改变
# my_car.read_meter()
# my_car.update_meter(100)
# my_car.read_meter()
# my_car.increment_meter(200)
# my_car.read_meter()

# </editor-fold>
class Battery():
def __init__(self,battery_size=70):
self.battery_size=battery_size
def describe_battery(self):
print('这个车有'+str(self.battery_size)+'的电容量')
def get_range(self):
if self.battery_size==70:
car_range=240
elif self.battery_size <=100 and self.battery_size>=75:
car_range=270
msg="这个车能跑%s公里"%car_range
return msg
class ElectricCar(Car): #创造ElectricCar(电动汽车)类
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery=Battery()
def describe_battery(self):
print("电动汽车特有的属性是%s"%self.battery.battery_size)
def read_meter(self): #父类当中的一个方法,对子类没有帮助,在子类当中,定义一个父类当中同名字的方法名,那么就会忽略父类的方法,取其精华。(重写父类的方法)
print("这个方法是重写父类的方法,会忽略父类当中的read_meter()方法")
my_ele_car=ElectricCar("usa",'baoma',2020)
# print(my_ele_car.get_car_desc())
# my_ele_car.read_meter()
# my_ele_car.describe_battery()
my_ele_car.battery.describe_battery()
# print(my_ele_car.battery.battery_size)
print(my_ele_car.battery.get_range())
# """
# super()是一个特殊的函数,它让父类和子类可以关联起来。这段代码让python调用ElectricCar的父类方法__init__(),让ElectricCar实例包含父类的所有属性。Python中类的初始化方法是__init__(),因此父类、子类的初始化方法都是这个,如果子类不实现__init__()这个函数,初始化时调用父类的初始化函数,如果子类实现了这个函数,则要在这个函数里显式调用一下父类的__init__(),这跟C++,jAVA不一样,他们是自动调用父类构造函数的。
# """
# </editor-fold>
posted on 2019-04-14 03:25  大潘NO_1  阅读(4373)  评论(0编辑  收藏  举报