找不到语法错误

时间:2013-05-30 20:04:08

标签: python python-2.7

我正在编写一个简单的基于文本的RPG游戏,我正试图让库存系统工作。我从一开始就逐字复制了工作代码,但是我得到了一个语法错误。我不确定我做错了什么,因为它对我来说很好看。对不起新手问题。谢谢!

class Container(object):

        def__init__(self, name):
                self.name = name
                self.inside = {}

    def__iter__(self):
            return iter(self.inside.items())

    def__len__(self):
            return len(self.inside)

    def__contains__(self, item):
            return item.raw in self.inside

    def__getitem__(self, item):
            return self.inside[item.raw]

    def__setitem__(self, item, value):
            self.inside[item.raw] = value
            return self[item]

    def add (self, item, quantity=1):
            if quantity < 0:
                    raise ValueError("Negative quantity.  Use remove() instead.")

            if item in self:
                    self[item].quantity += quantity
                    self[item].recalc()

            else:
                    self[item].quantity -= quantity
                    self[item].recalc()

我运行时遇到以下错误:

Traceback (most recent call last):
  File "game.py", line 2, in <module>
    from characters.player import *
  File "/home/dave/Projects/rpg-master/characters/player.py", line 4, in <module>
    from items.container import *
  File "/home/dave/Projects/rpg-master/items/container.py", line 4
    def__init__(self, name):
                           ^
SyntaxError: invalid syntax

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:9)

def之后你没有空格:

def__init__(self, name):
    self.name = name
    self.inside = {}

应该是

def __init__(self, name):
    self.name = name
    self.inside = {}

以及其他类功能。

答案 1 :(得分:6)

首先,__init__没有很好地缩进。其次,您应该将def关键字与实际方法名称分开:

class Container(object):

    def __init__(self, name):
        self.name = name
        self.inside = {}

    def __iter__(self):
        return iter(self.inside.items())

    def __len__(self):
        return len(self.inside)

    def __contains__(self, item):
        return item.raw in self.inside

    def __getitem__(self, item):
        return self.inside[item.raw]

    def __setitem__(self, item, value):
        self.inside[item.raw] = value
        return self[item]

更新:请注意,你正在混合缩进,python通常建议4个空格用于缩进,但是我看到你同时使用4和8,你可以使用你想要的任何东西但坚持它,不要混淆它们,因为你可能会发现意想不到的行为。

希望这有帮助!