Python语法错误

时间:2012-08-06 03:03:28

标签: python

我的代码遇到了一些问题。我正在阅读“使用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!"

2 个答案:

答案 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。”

不要将此错误视为一般语法错误。错误的类型告诉您需要了解的内容。