我编写了一个简单的脚本来帮助我更好地理解类的使用。它为游戏生成一个随机角色。我定义了对象,然后对该对象调用了一个函数来打印出生成的字符。在打印 block 的末尾,有一个无关的“无”,我不确定它来自哪里,也不确定它为什么被打印。这是示例输出:
ted
Strength : 20
Dexterity : 17
Hit Points: 100
Aura : 100
Weapon :
Spell :
Item :
Element :
--------------------
None
在我的代码中,player.stats() 的最后一行是 print "-"* 20,它显示在“None”的正上方。下面是定义对象的代码:
class Player(object):
def __init__(self, name):
self.name = name
self.strength = randint(15, 20)
self.dexterity = randint(15, 20)
self.hit_points = 100
self.aura = 100
self.weapon = " "
self.spell = " "
self.item = " "
self.element = " "
def stats(self):
print "\n"
print self.name
print "Strength : %d" % self.strength
print "Dexterity : %d" % self.dexterity
print "Hit Points: %d" % self.hit_points
print "Aura : %d" % self.aura
print "Weapon : %s" % self.weapon
print "Spell : %s" % self.spell
print "Item : %s" % self.item
print "Element : %s" % self.element
print "-" * 20
然后使用这个实例化对象:
name = raw_input("Name your character: ")
player = Player(name)
print player.stats()
完整代码可阅读here at Pastebin如有必要。
请您参考如下方法:
print player.stats()
是罪魁祸首。 player.stats() == None
你只需要:
player.stats()
最好将函数命名为 player.printStats()。
另一种选择是让它返回一个字符串:
def stats(self):
return '\n'.join([
self.name
"Strength : %d" % self.strength,
"Dexterity : %d" % self.dexterity,
"Hit Points: %d" % self.hit_points,
"Aura : %d" % self.aura,
"Weapon : %s" % self.weapon,
"Spell : %s" % self.spell,
"Item : %s" % self.item,
"Element : %s" % self.element,
"-" * 20
])
然后 print player.stats() 会按预期运行
