【问题标题】:Name Error python, a text adventure gameName Error python,一款文字冒险游戏
【发布时间】:2013-11-16 03:41:38
【问题描述】:

所以我有一个问题,我不太明白为什么会这样。当它应该在我的武器类上时,我得到一个(名称错误全局变量“值”未定义)。

from items import *

class weapons(Item):
    def __init__(self, name, attack_damage, lifesteal = 0):
        super(weapons,self).__init__(name, value, quantity=1)
        self.attack_damage = attack_damage
        self.lifesteal = lifesteal

这是武器从中获取它的类,它已经定义了值。

class Item(object):
    def __init__(self, name, value, quantity=1):
        self.name = name
        self.raw = name.replace(" ","").lower()
        self.quantity = quantity
        self.value = value
        self.netValue = quantity * value
    def recalc(self):
        self.netValue = self.quantity * self.value

我已经有一段与此类似的代码正在运行,但由于某种原因,这个值错误正在发生。我只是将其包括在内。

from character import*
class player(character):
    def __init__(self,name,hp,maxhp,attack_damage,ability_power):
        super(player,self).__init__(name, hp, maxhp)
        self.attack_damage = attack_damage
        self.ability_power = ability_power

以及玩家从中获取内容的类

class character(object):
    def __init__(self,name,hp,maxhp):
        self.name = name
        self.hp = hp
        self.maxhp = maxhp
    def attack(self,other):
        pass

如您所见,我在这里做了,当我呼叫玩家时,这段代码可以工作。

【问题讨论】:

  • 您认为value 在您的super(weapons,self).__init__(name, value, quantity=1) 行中来自哪里? value 应该是 attack_damage 吗?

标签: python-3.x adventure


【解决方案1】:

您需要将value 参数添加到武器类的__init__ 构造函数中。

【讨论】:

  • +1 用于确定 value 已“几乎定义” - 我在手机上执行此操作但没有看到。
  • @Floris 我认为我的回答是错误的; self.value 在哪里定义?
  • 在课堂上Item? “这是武器获取它的类别”。
  • @Floris 是的,但是value 属性只会在Item 实例中设置,对吧?
  • 我做了 self.value 但现在它说我有一个属性错误:“武器”对象没有属性“值”
【解决方案2】:

super 需要一个参数 value 但你没有将它传递给 init

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多