我的代码遇到了一些问题。我正在阅读“使用Python和Pygame开始游戏开发”一书中的示例(示例2-4和2-5)并且我遇到了语法错误。以下是有问题的代码。我是Python的新手,可能只是打错了。
这本书使用python 2.4。我得到了2.7和3.2的错误。
两个问题:
代码行:
my_tank = Tank("Bob")
收到语法错误。突出显示my_tank
。我确实让它开始工作,但我不确定它为什么开始工作。
代码行:
print self.name, "fires on", enemy.name
也收到了语法错误。此行中的self
会突出显示。当my_tank
盯着工作时,我开始收到此错误。不知道这里发生了什么。
class Tank(object):
def _init_(self, name):
self.name = name
self.alive = True
self.ammo = 5
self.armor = 60
my_tank = Tank("Bob")
def _str_(self):
if self.alive:
return "%s (%i armor, %i shells)" % (self.name, self.armor, self.ammo)
else:
return "%s (dead)" % self.name
def fire_at(self, enemy):
if self.ammo >= 1:
self.ammo -= 1
print self.name, "fires on", enemy.name
enem.hit()
else:
print self.name, "has no shells!"
def hit(self):
self.armor -= 20
print self.name, "is hit!"
if self.armor <= 0:
self.explode()
def explode(self):
self.alive = False
print self.name, "explodes!"
答案 0 :(得分:4)
正如@aland所说,函数名称应该是__init__
和__str__
。
此外,此行应在类
之外。my_tank = Tank("Bob")
毕竟,您需要该类的实例供以后使用。
答案 1 :(得分:2)
chrsaycock的answer看起来是正确的,但我想强调注意你收到的追溯是多么重要。
运行代码时出现此错误:
Traceback (most recent call last):
File "<pyshell#86>", line 1, in <module>
class Tank(object):
File "<pyshell#86>", line 9, in Tank
my_tank = Tank("Bob")
NameError: name 'Tank' is not defined
你的问题应该是“为什么我在这里NameError
?我在第一行定义了Tank
。”
不要将此错误视为一般语法错误。错误的类型告诉您需要了解的内容。