【问题标题】:Create a class containing data without user input?创建一个没有用户输入的包含数据的类?
【发布时间】:2014-07-13 22:31:17
【问题描述】:

我最近开始了计算机科学的年终项目(我自己提出的,也是我第一年学习它,所以只有大约 4 个月的 Python 经验),并决定在其中做一个简单的口袋妖怪模拟器。

我最近遇到了一个障碍:假设用户选择皮卡丘作为他们的首发。我不希望用户输入他们的健康、攻击、速度和动作。他们是创建一个已经包含该数据的皮卡丘类的方法吗?

我尝试过这样的事情:

class Pikachu(object):
    def __init__(self):
        self.data = []
    def health(self):
        self.health = 22
        print self.health
    def attack(self):
        self.attack = 7
    def speed(self):
        self.speed = 6

Pikachu.health()

当我这样做时(试图检查健康状况是否已存储并将按需返回),它会给出错误:

TypeError: unbound method health() must be called with Pikachu instance as first argument (什么都没有)

我也对错误的含义感到困惑。通常这会起作用,并且您不需要括号中的参数,但在这种情况下它不需要。

是否有一些不同的方法来创建一个类并在其中存储数据?有没有办法创建一个对象或做这样的事情:

def Pikachu:
    health = 22
    attack = 7
    speed = 6

【问题讨论】:

  • Pikachu().health()...
  • 这对我来说是一个愚蠢的错误!感谢您的快速答复!

标签: python class object store


【解决方案1】:

这是因为您的变量名称与您的方法名称相同。还有为什么不初始化构造函数中的所有内容:

    class Pikachu(object):
    def __init__(self):
        self.data = []
        self.attack = 7
        self.health = 22
        self.speed = 6
    def get_health(self):
        return self.health

    def get_attack(self):
         return self.attack

    def get_speed(self):
         return self.speed

if __name__ == '__main__':
    p = Pikachu()
    print p.get_health()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2015-08-14
    相关资源
    最近更新 更多