国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python高级 > 案例详解:Python类继承机制

案例详解:Python类继承机制

头像

silencement

2019-07-09 14:33:252759浏览 · 0收藏 · 0评论

下面实现一个类继承的小程序,下面一边结合代码一边介绍相关继承的知识。例子以车、汽车为例,车为父类、汽车为子类。

一、定义父类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())

子类重写了父类的drive方法,本次只用了一种老猿推荐的方式调用父类的drive方法,重写的方法内根据油量确认了实际驾驶里程之后调用了父类的drive方法,同时对油量进行了调整,输出了一些车况信息,其中调用了父类的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,采用重写+父类调用方式实现了drive和构造方法的继承,并实现了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
关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

《吃你吃上瘾》| 强壮公借种日日躁我| 国外不堪入目的演唱会| B站未过审的跳舞视频| 在床上怎么骚一点| 同学的母亲中字ID| 真人刺激战场40分钟电视剧| 爱上兄弟的母亲6集免费观看| 自己怎么玩隐私位置游戏| 老公装醉看我和别人在一起| 欧美《禁忌5》| 人犬兽人在线观看免费完整| 电影初尝云雨之欢免费观看| 儿媳妇长太漂亮免费观看电视剧 | 初中生兄弟互相导管立的经历| 描写燕子的古诗词| 女教师免费观看全集电视剧 | 下面的小嘴又饿了| 《枕边欢情》电影免费观看| 《帐篷里的秘密》第一季| 把腿扒开让我添30分钟| 姐姐的闺蜜2字ID高冷霸气| 人口兽猪马狗第1集| 少妇与子亂伦HD| 男生把女生QQ放在一起的原因| 《炸裂吧!巨棒》免费阅读漫画| 公交车上双乳被老汉揉搓玩下载| 干婚是什么意思| 《再来一次好吗》免费观看| 《特别酒店》免费观看 | 簧片| 数学课代表的B真紧| 美女被咬小头头视频大全图片| 男生困困进女生困困洞视频| 王蒙多| 蛇妻| 爸爸的擎天柱让我看第二集 | 人犬兽人在线观看免费完整一| 丈夫不在的日子中字头| 把她日出水了好紧大爽了视频| 周未同床 电影