首页 > 解决方案 > 试图创建一个类来定义敌人

问题描述

除了:这行得通吗?我可以像布什的声明一样添加更多内容吗?

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"

标签: pythonclass

解决方案


在我的脑海中,我可以想到两种方法来解决这个问题,具体取决于你想要实现的目标。

您现在构建代码的方式是,您可以创建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")

或者,如果您打算实例化特定类型的Bushes 和Imps,您可能希望将它们创建为它们自己的类,这些类是该类的子类,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();

推荐阅读