news 2026/7/24 12:47:02

Python基础之面向对象 - 三大特征练习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python基础之面向对象 - 三大特征练习

题目1:车辆租赁计费系统

背景:实现不同车型的租赁费用计算。

  1. 父类Vehicle包含私有属性_base_rate(日基础租金)和_rent_days(租的天数)。方法calculate_cost()返回基础租金×天数。
  2. 子类:
    • Car:额外收取每天50元保险费,重写calculate_cost()
    • Truck:基础租金×天数 + 每公里5元(公里数作为额外参数传入),因此重写calculate_cost(km)
  3. 封装_base_rate只能通过构造函数设置,不能直接修改。提供set_rent_days()方法修改租车的天数。
  4. 创建Car和Truck对象测试
classVehicle:def__init__(self,base_rate,rent_days):self._base_rate=base_rate self._rent_days=rent_daysdefcalculate_cost(self):returnself._base_rate*self._rent_daysdefset_rent_days(self,rent_days):self._rent_days=rent_daysclassCar(Vehicle):defcalculate_cost(self):returnsuper().calculate_cost()+50*self._rent_daysclassTruck(Vehicle):def__init__(self,base_rate,rent_days,km):Vehicle.__init__(self,base_rate,rent_days)self.km=kmdefcalculate_cost(self):returnsuper().calculate_cost()+5*self.km# 测试c=Car(100,3)t=Truck(200,5,200)print("car的租金:",c.calculate_cost())print("trunk的租金:",t.calculate_cost())# lst = [c,t]# for i in lst:# print(i.calculate_cost())

题目2:游戏角色职业系统

背景:RPG游戏中角色有多种能力来源。
要求

  1. 创建三个基类:
    • 战士Fighter:包含属性__strength力量值、提供attack()方法输出“物理攻击”
    • 法师Mage:包含属性__intelligence智力值、提供cast_spell()方法输出“火球术”
    • 医师Healer:包含__wisdom智慧值、提供heal()方法输出“治疗术”。
    • 每个类都有get_power()方法返回不同数值(战士返回力量值,法师返回智力值等)。
  2. 创建子类Paladin(圣骑士)同时继承FighterHealer,重写get_power()为(力量×0.6 + 智慧×0.4)。并拥有自己的holy_light()技能(输出“圣光普照”)。
  3. 创建子类Spellblade(魔剑士)同时继承FighterMage,重写get_power()为(力量×0.5 + 智力×0.5),重写attack()为先施放一个附加魔法效果再物理攻击(调用两个父类对应方法)。
  4. 多态:定义一个函数show_power(character),调用其get_power()。演示不同角色传入时得到不同计算方式。
  5. 封装:每个角色的力量/智力等属性设为私有,通过getter访问。
# 战士classFighter:def__init__(self,strength):self.__strength=strengthdefattack(self):print("物理攻击")defget_power(self):returnself.__strength@propertydefstrength(self):returnself.__strength# 法师classMage:def__init__(self,intelligence):self.__intelligence=intelligencedefcast_spell(self):print('火球术')defget_power(self):returnself.__intelligence@propertydefintelligence(self):returnself.__intelligence# 医师classHealer:def__init__(self,wisdom):self.__wisdom=wisdomdefheal(self):print("治疗术")defget_power(self):returnself.__wisdom@propertydefwisdom(self):returnself.__wisdom# 创建子类# 圣骑士classPaladin(Fighter,Healer):def__init__(self,strength,wisdom):# 分别调用不同父类的初始化方法,为从不同父类继承的实例属性初始化Fighter.__init__(self,strength)Healer.__init__(self,wisdom)defget_power(self):returnself.strength*0.6+self.wisdom*0.4defholy_light(self):print("圣光普照")# 魔剑士classSpellblade(Fighter,Mage):def__init__(self,strength,intelligence):Fighter.__init__(self,strength)Mage.__init__(self,intelligence)defget_power(self):return(self.strength+self.intelligence)*0.5defattack(self):Mage.cast_spell(self)Fighter.attack(self)# 测试defshow_power(character):print("能力:",character.get_power())p=Paladin(1000,90)s=Spellblade(2000,100)show_power(p)show_power(s)p.attack()s.attack()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 12:46:28

AMIC120引脚复用与信号设计实战:从原理到PCB布局的完整指南

1. 从引脚复用说起:为什么AMIC120的引脚设计如此重要如果你做过嵌入式硬件设计,尤其是基于TI Sitara系列处理器的项目,那你一定对“引脚复用”这个词又爱又恨。爱的是,它让一颗小小的芯片能集成ADC、CAN、Ethernet、PRU-ICSS等一大…

作者头像 李华
网站建设 2026/7/24 12:43:31

飞塔防火墙设置开启vdom-dns

全局DNS:Global DNS.(global) # show system dns config system dnsset primary 10.40.0.3set secondary 208.91.112.52 endVDOM DNS.(vFW_RD) # config system vdom-dns (vdom-dns) # show config system vdom-dnsset vdom-dns enableset primary 8.8.8.8set secondary 4.2.…

作者头像 李华
网站建设 2026/7/24 12:42:56

Mac系统Nginx安装配置全指南

1. 项目概述 作为一名在Web服务领域摸爬滚打多年的老手,我深知Nginx在开发环境中的重要性。特别是在Mac系统上,很多开发者都会遇到各种"水土不服"的问题。这篇指南将带你从零开始,在Mac上玩转Nginx,包括安装、配置、调试…

作者头像 李华
网站建设 2026/7/24 12:42:48

大模型动态推理能力评测框架设计与实践

1. 大模型评测的现状与痛点当前大模型评测领域存在明显的"数据泄露"问题——许多评测集早已被用于模型训练,导致分数虚高。去年某知名开源模型在评测中表现优异,实际使用时却连基础数学题都频繁出错,这种"评测高分&#xff0c…

作者头像 李华
网站建设 2026/7/24 12:42:45

SumatraPDF:免费好用的PDF阅读器 v3.6.1绿色免安装版

现如今市面上的PDF软件有很多,使用体验极差,软件体积特别大,安装时附带一堆没用的功能,或者打开速度慢,严重消耗系统资源,电脑配置稍微差一点用起来就很卡。 今天给大家介绍的这款软件就完美解决了上述问题…

作者头像 李华
网站建设 2026/7/24 12:41:18

OpenCV实战:图像拼接、试卷判分与目标提取

1. 项目概述:OpenCV实战三部曲计算机视觉早已不是实验室里的高深技术,而是渗透到我们日常开发的实用工具。最近半年我密集完成了三个典型的OpenCV实战项目:图像拼接、试卷自动判分和目标提取。这三个案例恰好覆盖了计算机视觉的三个核心应用方…

作者头像 李华