爱存档 用唐僧经典语录解释OOP
2016年9月视频
ChatGPT的讲解:
可以设计两个类:
Human(人类)Monster(怪物)
然后再创建实例(实例化对象)。
例如:
# Human 类
class Human:
def __init__(self, name, hp, weapon):
self.name = name
self.hp = hp
self.weapon = weapon
def introduce(self):
print(f"人类: {self.name}")
print(f"HP: {self.hp}")
print(f"武器: {self.weapon}")
def attack(self):
print(f"{self.name} 使用 {self.weapon} 发动攻击!")
# Monster 类
class Monster:
def __init__(self, name, hp, skill):
self.name = name
self.hp = hp
self.skill = skill
def introduce(self):
print(f"怪物: {self.name}")
print(f"HP: {self.hp}")
print(f"技能: {self.skill}")
def roar(self):
print(f"{self.name} 发出了可怕的咆哮!")
# 实例化 Human
hero = Human("Archer", 120, "Long Bow")
# 实例化 Monster
dragon = Monster("Fire Dragon", 500, "Fire Breath")
# 调用方法
hero.introduce()
hero.attack()
print("------")
dragon.introduce()
dragon.roar()运行结果:
人类: Archer
HP: 120
武器: Long Bow
Archer 使用 Long Bow 发动攻击!
------
怪物: Fire Dragon
HP: 500
技能: Fire Breath
Fire Dragon 发出了可怕的咆哮!这个结构里包含:
类(Class)
class Human:是“模板”。
属性(Attribute)
例如:
self.hp
self.weapon表示对象拥有的数据。
方法(Method)
例如:
attack()
roar()表示对象的行为。
实例化(Object)
hero = Human(...)真正创建一个角色。
游戏开发里的典型思路
很多游戏底层都类似:
Entity
├── Human
├── Monster
├── NPC
└── Boss然后:
每个对象有属性
有行为
有状态
这就是 OOP(面向对象编程)的核心思想。
可以继续在:
HumanMonster
基础上讲“继承(Inheritance)”。
比如:
少侠 属于 人类的一种所以:
Shaoxia 继承 Human意思是:
少侠自动拥有 Human 的能力,再额外增加自己的能力。
继承版示例
# 父类:Human
class Human:
def __init__(self, name, hp, weapon):
self.name = name
self.hp = hp
self.weapon = weapon
def introduce(self):
print(f"人类: {self.name}")
print(f"HP: {self.hp}")
print(f"武器: {self.weapon}")
def attack(self):
print(f"{self.name} 使用 {self.weapon} 攻击!")
# 子类:少侠
class Shaoxia(Human):
# 新增技能
def qinggong(self):
print(f"{self.name} 使用轻功飞上屋顶!")
def justice(self):
print(f"{self.name} 行侠仗义!")
# 实例化少侠
hero = Shaoxia("李逍遥", 150, "长剑")
# 继承自 Human
hero.introduce()
hero.attack()
print("------")
# 少侠自己的方法
hero.qinggong()
hero.justice()输出效果
人类: 李逍遥
HP: 150
武器: 长剑
李逍遥 使用 长剑 攻击!
------
李逍遥 使用轻功飞上屋顶!
李逍遥 行侠仗义!继承到底发生了什么?
这一句:
class Shaoxia(Human):表示:
Shaoxia 是 Human 的子类所以:
自动继承属性
自动继承方法
包括:
introduce()
attack()都能直接用
为什么游戏特别喜欢继承?
因为:
可以复用代码
结构清晰
方便扩展
例如:
所有 Human 都有:
hp
attack()
move()那少侠就不用重新写一遍。
还能“重写”(Override)
比如:
普通 Human:
def attack(self):
print("普通攻击")少侠:
def attack(self):
print("御剑术!")这叫:
方法重写也是继承的重要部分。
Python 里的 super()
如果子类想调用父类:
super().__init__(...)例如:
class Shaoxia(Human):
def __init__(self, name, hp, weapon, sect):
super().__init__(name, hp, weapon)
self.sect = sect

