在学习 Python 编程时,经常会听到“类”(class)这个概念。对于刚接触编程的新生来说,这听起来可能有点抽象。本文将用一个轻松有趣的例子——武侠人物,来帮助理解“类”是什么、它有哪些组成部分,以及如何用它创建自己的角色并让他们“打一架”。
什么是“类”?
可以把“类”想象成一个模板或蓝图。比如,要批量制作“武侠人物”,就需要先设计一个通用的角色模板,规定所有角色都应该有姓名、内力、血量等基本属性,以及攻击、防御、修炼等行为。这个模板就是“类”。
一旦有了这个模板,就可以根据它创建具体的“对象”(也叫“实例”),比如段誉、虚竹,甚至用你自己和同学的名字什么的。
定义一个武侠角色类
下面用 Python 写一个简单的 WuxiaRole 类:
class WuxiaRole: def __init__(self, name, neili=50, hp=100, attack=20, defense=10, skill="普通攻击"): # 属性:角色的基本信息 self.name = name # 姓名 self.neili = neili # 内力 self.hp = hp # 血量 self.attack = attack # 攻击力 self.defense = defense # 防御力 self.skill = skill # 必杀技名称
def practice(self): # 行为:修炼武功,提升内力和攻击力 self.neili += 10 self.attack += 5 print(f"{self.name}修炼成功!内力+10,攻击力+5")
def show_status(self): # 行为:显示当前状态 print(f"【{self.name}】血量:{self.hp} 内力:{self.neili} 攻击:{self.attack} 防御:{self.defense}")
解释一下:
•__init__ 是初始化方法,每次创建新角色时自动调用。•self.xxx 是角色的属性(数据)。•practice() 和 show_status() 是角色的方法(行为/函数)。
创建具体角色:段誉和虚竹
现在可以用这个模板创建两个经典角色:
duanyu = WuxiaRole("段誉", neili=80, hp=120, attack=25, defense=15, skill="六脉神剑")xuzhu = WuxiaRole("虚竹", neili=90, hp=130, attack=22, defense=20, skill="天山折梅手")
他们各自拥有不同的初始数值,但都遵循同一个模板。
可以让他们修炼一下:
duanyu.practice() # 段誉修炼xuzhu.practice() # 虚竹修炼
也可以查看他们的状态:
duanyu.show_status()xuzhu.show_status()
让角色对战:张三 vs 李四
接下来,定义一个独立的函数 fight(role1, role2),让两个角色进行对战。规则很简单:
•双方轮流攻击;•每次攻击造成的伤害 = 攻击方攻击力 - 防御方防御力(最低为1);•血量降到0或以下就倒下;•先出手的是第一个传入的角色。
def fight(role1, role2): print(f"\n⚔️ 对战开始:{role1.name} vs {role2.name} ⚔️\n")
round_num = 1 while role1.hp > 0 and role2.hp > 0: print(f"--- 第 {round_num} 回合 ---")
# role1 攻击 role2 damage1 = max(1, role1.attack - role2.defense) role2.hp -= damage1 print(f"{role1.name} 使用 {role1.skill},对 {role2.name} 造成 {damage1} 点伤害!")
if role2.hp <= 0: print(f"\n🎉 {role1.name} 获胜!") break
# role2 攻击 role1 damage2 = max(1, role2.attack - role1.defense) role1.hp -= damage2 print(f"{role2.name} 使用 {role2.skill},对 {role1.name} 造成 {damage2} 点伤害!")
if role1.hp <= 0: print(f"\n🎉 {role2.name} 获胜!") break
round_num += 1 print() # 空一行,更清晰
现在创建两个新角色,并让他们打一场:
zhangsan = WuxiaRole("法外狂徒张三", neili=60, hp=110, attack=30, defense=8, skill="街头霸王拳")lisi = WuxiaRole("西装革履李四", neili=40, hp=90, attack=25, defense=12, skill="PPT暗器术")
fight(zhangsan, lisi)
运行后,会看到两人你来我往,直到一方血量归零!
简单总结
•类(class) 是创建对象的模板。•属性(如 name、hp) 描述对象的状态。•方法(如 practice、show_status) 描述对象能做什么。•通过类可以轻松创建多个具有相同结构但不同数据的角色。•函数可以操作这些对象,实现互动(比如对战)。
这种“把数据和操作封装在一起”的思想,就是面向对象编程(OOP) 的核心。掌握它,就能写出更清晰、更易维护的代码。
但实际上面向对象的更多进阶玩法还要看继承和多态等等,这些方面以后学C++或者Java就能接触更多了,Python里面这回就先不说这些了。
预览时标签不可点
Close
更多
Name cleared
微信扫一扫赞赏作者
Like the AuthorOther Amount
赞赏后展示我的头像
作品
暂无作品
Like the Author
Other Amount
¥
最低赞赏 ¥0
OK
Back
Other Amount
更多
赞赏金额
¥
最低赞赏 ¥0
1
2
3
4
5
6
7
8
9
0
.
Python语言程序设计 · 目录
Python语言程序设计
上一篇数值积分漫谈:如何让用Python求积分?下一篇Windows 系统下从清华大学 TUNA 镜像安装 Miniconda3 完整指南
Close
更多
搜索「」网络结果
Close
调整当前正文文字大小
更多
100%