为不同的类分配不同的变量

2024-06-16 14:26:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我跟随一个Python教程系列来上课。 所以。。我正在尝试制造某种“医疗RPG职业系统”,并试图把武器带到一个战士职业。我真的很新,所以如果你们解释得尽可能简单,我会很感激的。你知道吗

所以,我得到一个错误:

AttributeError: 'Warrior' object has no attribute 'wep_name'

我做错什么了?你知道吗

代码如下:

class Character(object):
    def __init__(self, name):
        self.health = 100
        self.name = name
        self.equipment = {

        "Weapon": 'None',
        "Attack Damage": '0'
        }

    def printName(self):
        print "Name: " + self.name


class Warrior(Character):
    """
    **Warrior Class**
    50%  more HP
    """
    def __init__(self, name):
        super(Warrior, self).__init__(name)
        self.health = self.health * 1.5
        self.equipment["Weapon"] = self.wep_name      # <-- ?

class Weapon(object):
    def __init__(self, wep_name):
        self.wep_name = wep_name

如果标题没有意义,我很抱歉。我不太清楚这叫什么:(


Tags: nameselfobjectinitdef教程class医疗
2条回答

在包含错误的行中,self表示Warrior,而不是Weapon,因此它没有wep_name。如果您想在此时创建一个新的Weapon,它可能是这样的:

    self.equipment["Weapon"] = Weapon("Sword")

因为你的战士职业中没有武器成员变量,所以你不能分配它。你知道吗

您必须像这样将它提供给init方法

def __init__(self, name, wep_name) 

就像你在武器课上一样。你知道吗

现在你可以做了

self.equipment["Weapon"] = wep_name 

否则,请考虑引用已经封装了武器名称的武器类实例

希望这对你有帮助

相关问题 更多 >