python - 试图创建一个类来定义敌人
问题描述
除了:这行得通吗?我可以像布什的声明一样添加更多内容吗?
class Enemy():
def __init__(self, name, HP, skills, attack, defense, loot, expget, flvrtxt):
self.name = name
self.HP = health
self.skills = skills
self.attack = attack
self.defense = defense
self.loot = loot
self.expget = expget
self.flvrtxt = text
bush = Enemy()
bush.name = "Bush"
bush.HP = 10
bush.skills = "none"
bush.attack = 0
bush.defense = 5
bush.loot = "A stick"
bush.expget = 50
bush.flvrtxt = "Just a bush, it cannot attack"
通过添加更多,我的意思是我可以基本上复制粘贴灌木定义,改变周围的统计数据并制造一个全新的敌人吗?例如,我可以添加这个吗?:
imp = Enemy():
imp.name = "Imp"
imp.HP = 50
imp.skills = "none"
imp.attack = 10
imp.defense = 10
imp.loot = "gold"
imp.expget = 150
imp.flvrtxt = "Cliche RPG enemy"
解决方案
在我的脑海中,我可以想到两种方法来解决这个问题,具体取决于你想要实现的目标。
您现在构建代码的方式是,您可以创建Enemy
类的实例,这些实例由它们的参数定义。正如@Patrick Haugh 在评论部分指出的那样,Enemy
如果您将方法更新为 titled ,则可以显式设置 at的所有属性__init__(self, name, HP, skills, attack, defense, loot, expget, flvrtxt)
:
class Enemy(object):
def __init__(self, name, HP, skills, attack, defense, loot, expget, flvrtxt):
self.name = name
self.HP = HP
self.skills = skills
self.attack = attack
self.defense = defense
self.loot = loot
self.expget = expget
self.flvrtxt = flvrtext
bush = Enemy("Bush", 10, "none", 0, 5, "A Stick", 50, "Just a bush, it cannot attack")
imp = Enemy("Imp", 50, "none", 10, 10, "gold", 150, "Cliche RPG enemy")
或者,如果您打算实例化特定类型的Bush
es 和Imp
s,您可能希望将它们创建为它们自己的类,这些类是该类的子类,Enemy
但它们的关联字段具有它们自己的默认实现:
class Bush(Enemy):
def __init__(self):
super(Bush, self).__init__("Bush", 10, "none", 0, 5, "A Stick", 50, "Just a bush, it cannot attack")
class Imp(Enemy):
def __init__(self):
super(Imp, self).__init__("Imp", 50, "none", 10, 10, "gold", 150, "Cliche RPG enemy")
这种方式将允许您编写如下代码,以实例化 a Bush
,该 a 将预先填充您Bush
在其类中为 a 定义的所有字段:
bush = Bush();
推荐阅读
- google-sheets - 如何在 Google 工作表中的所有列上应用相同的条件格式?
- mysql - 如何自动更新 DATE 变量?
- javascript - 特定日期的倒计时
- c# - 使用反射c#获取字段和属性的方法
- javascript - 通过十字按钮关闭窗口时,OnBeforeUnload 不起作用
- c - 如果换行,则在 char[] 数组中复制文件崩溃
- python - 为什么亚当的 get_update 只执行一次?
- python - Python 将二进制数据缓冲区拆分为特定大小的块并将它们存储在变量中
- bixby - Bixby - 将用户输入从一次操作传递给其他操作
- android-appbarlayout - Androidx滚动视图行为不起作用