位置: IT常识 - 正文

案例详解:Python类继承机制(案例详解:功能点估算法)

编辑:rootadmin

推荐整理分享案例详解:Python类继承机制(案例详解:功能点估算法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:战略地图绘制案例详解,案例详解:S集团财务共享战略与服务中心建设,案例详解:S集团财务共享战略与服务中心建设,六爻案例详解,六爻案例详解,战略地图绘制案例详解,免抵退税计算方法案例详解,六爻案例详解,内容如对您有帮助,希望把文章链接给更多的朋友!

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

一、定义父类Vehicle

classVehicle():def__init__(self,wheelcount,power):#构造方法,参数有轮子数和动力self.wheelcount,self.power,self.totaldistance=wheelcount,power,0#初始化行驶总里程为0defgettotaldistance(self):returnself.totaldistance#定义获取形式总里程的方法defdrive(self,distance):#定义drive方法self.totaldistance+=distance

二、定义子类Car

classCar(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

子类内首先重写了构造方法,注意:

案例详解:Python类继承机制(案例详解:功能点估算法)

1.首先调用了超类的构造方法,为了说明超类方法的调用,代码将三种调用超类构造方法都实现了,实际上只要有一种就够了;

2.超类构造方法中初始化了轮子数、动力以及总行驶里程。子类调用超类构造方法后,对于汽车又初始化了油量和每公里油耗。?

defdrive(self,distance):realdistance=min(distance,self.oil/self.oilcostperkm)super().drive(realdistance)self.oil-=realdistance*self.oilcostperkmprint("车开了{}公里,目前邮箱存油{:.2f}升,目前车辆总里程:{}KM".format(realdistance,self.oil,super().gettotaldistance())

子类重写了父类的drive方法,本次只用了一种老猿推荐的方式调用父类的drive方法,重写的方法内根据油量确认了实际驾驶里程之后调用了父类的drive方法,同时对油量进行了调整,输出了一些车况信息,其中调用了父类的gettotaldistance()方法。

defoiling(self,oil):self.oil+=oilprint("加油{}升,目前邮箱存油{:.2f}升".format(oil,self.oil))

实现子类独有的加油方法,父类的车可以是畜力或人力等其他方式驱动就没有这个方法。

defneedoiling(self):ifself.oil<5:returnTrueelse:returnFalse

实现子类独有的是否需要加油判断方法。

defoutput(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)foriinrange(1,100):print("***************第{}次循环************".format(i))car.oiling(random.randint(10,60))?#随机加油x升car.drive(random.randint(5,1000))#随机驾驶x公里car.output()?#输出车况信息ifcar.needoiling():break?#如果油不够了就结束循环#coding:utf-8importrandomclassVehicle():def__init__(self,wheelcount,power):self.wheelcount,self.power,self.totaldistance=wheelcount,power,0defdrive(self,distance):self.totaldistance+=distancedefgettotaldistance(self):returnself.totaldistanceclassCar(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.1defdrive(self,distance):realdistance=min(distance,self.oil/self.oilcostperkm)super().drive(realdistance)self.oil-=realdistance*self.oilcostperkmprint("车开了{}公里,目前邮箱存油{:.2f}升,目前车辆总里程:{}KM".format(realdistance,self.oil,super().gettotaldistance()))defoiling(self,oil):self.oil+=oilprint("加油{}升,目前邮箱存油{:.2f}升".format(oil,self.oil))defneedoiling(self):ifself.oil<5:returnTrueelse:returnFalsedefoutput(self):print("车子动力为{},100KM油耗{:.2f}升,车子累计行驶{}KM,油箱存油{:.2f}L".format(self.power,self.oilcostperkm*100,super().gettotaldistance(),self.oil))car=Car(4,'汽油发动机')car.oiling(50)foriinrange(1,100):print("***************第{}次循环************".format(i))car.oiling(random.randint(10,60))car.drive(random.randint(5,1000))car.output()ifcar.needoiling():break
本文链接地址:https://www.jiuchutong.com/zhishi/311733.html 转载请保留说明!

上一篇:2022最新款带采集功能抖音壁纸小程序源码

下一篇:linux服务器环境一键安装wdCP图形面板安装教程(linux服务器环境搭建)

  • 减免所得税会影响工资发放吗
  • 一般纳税人混凝土税率
  • 模具发票如何入账
  • 在建工程明细账采用什么账簿
  • 发票金额开多了怎么处理
  • 滴滴出行开具的运输服务电子普通发票
  • 支付外币投资会计处理
  • 固定资产的确认条件是什么
  • 固定资产暂估入账的账务处理
  • 一般纳税人税种认定有几个增值税要怎么申报呀
  • 购买的风机如何做分录
  • 境外中资企业转中资企业
  • 企业征地补偿支出需要什么凭据做账?
  • 如何网上认证发票流程
  • 本年利润年末怎么结转到利润分配
  • 教学用品采购
  • 培训费用走账需要交税吗
  • 同期对比和同比增长
  • 个税申报系统换一台电脑要怎么办
  • 小规模发工资超了怎么办
  • 无形资产研发支出适用于税前加计扣除的政策
  • 法人变更股权不转让有什么影响么么
  • 利润为负数怎么调
  • 企业增值税征收范围包括
  • 营改增之前的收入开什么票
  • 固定资产置换存货的账务处理
  • 混合销售行为的税务处理
  • 火车票抵扣进项税怎么申报填写
  • 审稿意见范例
  • JavaScript | 1000个判断条件难道要写了1000个 if ? 一文教你如何实现分支优化
  • redis两种持久化方式的优缺点
  • vue 登陆
  • mysql外键约束的基本语法结构
  • 事业单位财政拨款收入会计分录
  • 长期债权投资业务处理
  • 普票和专票的
  • sqlserver数据库备份
  • 增值税发票的抵扣期限
  • 购车贷款分期利率
  • 红字发票什么意思怎么做账
  • 个人转租房屋需要交房产税吗
  • 企业第四季度是什么时候
  • 事业单位的职工可以办营业执照吗
  • 门面转让费做账怎么做
  • 房地产开发企业建造的商品房,在出售前
  • 减资步骤
  • 诉讼代理费计入成本吗
  • 个体工商户如何注销网上
  • 购建时间是什么意思
  • sql解析原理
  • centos7怎么关闭端口
  • 苹果mac怎么下载淘宝
  • win7命令提示符
  • 创建windows
  • windows 10 build 9888
  • ubuntu下添加新用户
  • diy组装电脑前置怎么样
  • win10高分辨率
  • linux更新配置
  • win7系统盘扩大
  • linux chakan
  • js 编辑框
  • form表单中input设置为readonly和disabled的区别
  • 飞完整版歌曲
  • linux中执行.sh文件
  • linux脚本自启
  • unity 3d教程
  • jQuery ajax MD5实现用户注册即时验证功能
  • android怎么学
  • js和jquery混合使用
  • js写表格模板
  • jquery 触发点击
  • python 正则 \s
  • 国家税务局级别排名
  • 税务登记没去登记会怎么处罚
  • 车票进项税怎么认证
  • 国家电子税务总局重庆电子税务局
  • 水产品 免税
  • 企业改制和重组的区别
  • 公司以融资租赁形式从事非法放贷业务,,能否让法院判
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设