在类python中打印

时间:2015-12-18 20:08:59

标签: python

我在尝试在类功能中打印播放器的统计数据时遇到了麻烦。当我运行它时,它不会打印。

#include <vector>
//..
int a, b, c;
//..assume a, b, and c have values
std::vector<int> array(a*b*c);
//... call the function
OMat3(a, b, c, array.data());

4 个答案:

答案 0 :(得分:4)

如果您要打印统计信息,则必须打印统计信息。

def printStats(self):
    print("Health: " + ...)

你还需要实际调用函数(注意尾部括号):

link.printStats()

稍微更加pythonic的解决方案是修改打印对象时打印的内容。您可以通过定义方法__str__来实现。然后,只需将对象传递给print命令。

class Player(object):
    def __init__(self, name, hp, dmg, lvl, inventory, speed):
       self.name = name
       self.hp = hp
       self.dmg = dmg
       self.lvl = lvl
       self.inventory = inventory
       self.speed = speed

    def __str__(self):
        return "Health: %s Attack Damage: %s Level: %s Speed: %s" % (self.hp, self.dmg, self.lvl, self.speed)

link = Player("Link", 10, 3, 1, {}, 3)
print(link)

答案 1 :(得分:0)

取决于你在哪个版本的python中运行

for python 2.7

    print link.printStats()

for python 3.x

    print(link.printStats())

答案 2 :(得分:0)

相反,您可以使用__repr__(self) function

class Player(object):
    def __init__(self, name, hp, dmg, lvl, inventory, speed):
        self.name = name
        self.hp = hp
        self.dmg = dmg
        self.lvl = lvl
        self.inventory = inventory
        self.speed = speed

    def __repr__(self):
         return("Health: " + self.hp + ", Attack Damage: " + self.dmg + ", Level: " + self.lvl + ", Speed: " + self.speed)


link = Player("Link", 10, 3, 1, {}, 3)
print link

答案 3 :(得分:0)

当你在IDLE或REPL中运行程序时,python会自动打印函数的返回值。所以替换这个:

def printStats(self):
    return("Health: " + ...)

用这个:

def printStats(self):
    print("Health: " + ...)

您也无法实际调用该函数(即运行)。

link.printStats

简单地说&#34;好的,从链接中找到printStats函数。&#34;

你没有运行它,你只是检索它。

请改为尝试:

link.printStats()

BTW,python惯例说你不应该使用CamelCase字体来实现功能。请改用name_with_underscores。