【问题标题】:[Closed for the moment]Python class definition is not defined. Error【暂时关闭】Python类定义未定义。错误
【发布时间】:2018-10-02 08:48:03
【问题描述】:

我正在手机上编程。 我创建了类角色来保存有关该角色的所有信息,例如 Hp。 在定义了 hp 之后,我创建了一个名为 getHp() 的函数,它返回 hp。 后来当我在“stats()”函数中调用“getHp()”时,它说“getHp()”没有定义。它对我课堂上的所有功能都是一样的。 仅供参考“stats()”只是一个收集我的所有变量(在类内)并打印它们的函数。

#Adventure game
import random, time

#===========================#
class character():
      self.xp = 0
    def getLvl(self, xp):
            if xp < 5:
                  level = 1
            elif xp < 20:
                  level = 2
            elif xp < 60:
                  level = 3
            elif xp < 120:
                  level = 4
            else:
                  level = 5
            return level
          self.level = getLvl(self, xp)
#-----------------------------------------#
      self.inventory = {"knife": 1 , "bread": 2 , "gold": 10}

      self.armor = 0
#-----------------------------------------#
      self.attack = 6
      def getAttack(self, attack):
            return attack
#-----------------------------------------#
      self.dmg = 1
      def getDmg(self, dmg):
            return dmg
#-----------------------------------------#
      self.hp = 10 * level + armor
      def getHp(self, hp):
            return hp
      def updateHp(self, playerHp):
            self.hp = playerHp
#-----------------------------------------#
      def stats(self):
            self.getLvl(xp)
            self.getHp(hp)
            self.getAttack(attack)
            self.getDmg(dmg)
            print("Player: \n")
            print("Hp: ", hp, "\nLvl: ", level, "\nAttack: ", attack, "\nDmg: ", dmg)
            print("Inventory: ", self.inventory)
#===========================#

character.stats()

附:对不起,代码墙!

【问题讨论】:

  • 请提供您的代码,以便我们提供帮助。
  • @Geshode 是的,对不起,我还没有完成...... ????
  • 这段代码的格式很差,很难说到底出了什么问题
  • @AntiMatterDynamite 我明白,我会尝试修复我的代码,如果我仍然有问题,我会用我的新代码回来。

标签: python-3.x user-defined-functions container-classes


【解决方案1】:

当你在类中调用函数时,你使用的是“self”吗?在您的 stats() 方法中,它应该如下所示:

def stats(self):
    self.getHp()

这是 python 知道在类中引用 getHp() 的一种方式。

您可以在 python 文档中找到更多关于 Classes 和 self 的信息

https://docs.python.org/3/tutorial/classes.html

【讨论】:

  • 刚刚看到您更新的代码,您在函数调用、函数参数和变量中也缺少“自我”。添加这些,你会很好
  • 我猜我也需要一个“init”函数?
  • init 是一个在实例化对象时执行的特殊函数。因此,如果您在角色类中包含 init,则每当您实例化 character() 对象时,都会执行 init
  • 说你定义初始化并让它打印('hello'),然后你实例化你的字符类c1 = character(),c2 = character(),'hello'被打印两次
  • 啊,好吧,我已经添加了“自我”,但它仍然无法正常工作?我将使用新代码更新问题。
猜你喜欢
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 2012-05-23
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多