下面实现一个类继承的小程序,结合代码介绍相关继承的知识。例子以car和car为例,car是父类,car是子类。
一、定义父类Vehicle
class Vehicle():
def __init__(self,wheelcount, power):#构造方法,参数有轮子数和动力
self.wheelcount,self.power,self.totaldistance = wheelcount,power,0
#初始化行驶总里程为0
def gettotaldistance(self):return self.totaldistance #定义获取形式总里程的方法
def drive(self,distance):#定义drive方法
self.totaldistance += distance
二、定义子类Car
class Car(Vehicle):
def __init__(self,wheelcount, power):
super().__init__(wheelcount, power)
Vehicle.__init__(self,wheelcount, power)
super(Car,self).__init__(wheelcount, power)
self.oil,self.oilcostperkm=0,0.1
子类内首先重写了构造方法,注意:
1.首先调用超类的构造函数。为了说明超类方法的调用,代码实现了对超类构造函数的所有三个调用。其实一个就够了;
2.车轮数、功率和总里程在超类构造方法中初始化。子类调用超类构造方法后,对小车进行油量和公里油耗的初始化。 ?
def drive(self,distance):
realdistance=min(distance,self.oil/self.oilcostperkm)
super().drive(realdistance)
self.oil -= realdistance*self.oilcostperkm
print("车开了{}公里,目前邮箱存油{:.2f}升,目前车辆总里程:{}KM".format(realdistance,self.oil,
super().gettotaldistance())
子类重写了父类的驱动方法。这次只用了老猿推荐的一个方法来调用父类的驱动方法。重写的方法中,根据油位确认实际行驶里程,然后调用父类的驱动。方法,同时调整油量,输出一些车况信息,调用父类的gettotaldistance()方法。
def oiling(self,oil):
self.oil+=oil
print("加油{}升,目前邮箱存油{:.2f}升".format(oil,self.oil))
实现子类特有的加油方式。父类的车可以用畜力或者人力等其他方法驱动,所以没有这种方法。
def needoiling(self):
if self.oil<5: return True
else:return False
实现子类独有的是否需要加油判断方法。
def output(self):
print("车子动力为{},100KM油耗{}升,车子累计行驶{}KM,油箱存油{:.2f}L".format(self.power,self.oilcostperkm*100,
super().gettotaldistance(),self.oil))
实现子类唯一的输出车况的方法,其中调用了父类的gettotaldistance()方法。
至此,整个子类的代码实现就完成了。完全继承了父类的方法gettotaldistance,通过重写+调用父类的方式实现了驱动和构造方法的继承,实现了needoiling和oiling的独特方法。 ,它的实例变量self.wheelcount、self.power、self.totaldistance都是继承自父类。
三、调用的代码
下面是使用该类定义的一个实例,
car = Car(4,'汽油发动机')
car.oiling(50)
for i in range(1,100):
print("***************第{}次循环************".format(i))
car.oiling(random.randint(10,60)) ?#随机加油x升
car.drive(random.randint(5,1000)) #随机驾驶x公里
car.output() ?#输出车况信息
if car.needoiling(): break ?#如果油不够了就结束循环
四、 上述例子的完整源代码
#coding:utf-8
import random
class Vehicle():
def __init__(self,wheelcount, power):
self.wheelcount,self.power,self.totaldistance = wheelcount,power,0
def drive(self,distance):
self.totaldistance += distance
def gettotaldistance(self):return self.totaldistance
class Car(Vehicle):
def __init__(self,wheelcount, power):
super().__init__(wheelcount, power)
Vehicle.__init__(self,wheelcount, power)
super(Car,self).__init__(wheelcount, power)
self.totaldistance,self.oil,self.oilcostperkm=0,0,0.1
def drive(self,distance):
realdistance=min(distance,self.oil/self.oilcostperkm)
super().drive(realdistance)
self.oil -= realdistance*self.oilcostperkm
print("车开了{}公里,目前邮箱存油{:.2f}升,目前车辆总里程:{}KM".format(realdistance,
self.oil,super().gettotaldistance()))
def oiling(self,oil):
self.oil+=oil
print("加油{}升,目前邮箱存油{:.2f}升".format(oil,self.oil))
def needoiling(self):
if self.oil<5: return True
else:return False
def output(self):
print("车子动力为{},100KM油耗{:.2f}升,车子累计行驶{}KM,油箱存油{:.2f}L".format(self.power,self.oilcostperkm*100,super().gettotaldistance(),self.oil))
car = Car(4,'汽油发动机')
car.oiling(50)
for i in range(1,100):
print("***************第{}次循环************".format(i))
car.oiling(random.randint(10,60))
car.drive(random.randint(5,1000))
car.output()
if car.needoiling(): break
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python 使用 get() 访问字典值10/17
- ♥ python2和3如何同时使用pip12/05
- ♥ 如何使用python十进制模块?11/16
- ♥ Python 中的内置类型功能是什么?12/23
- ♥ python gevent原理分析01/04
- ♥ python3代码如何自动补全?11/15
内容反馈