我正在编写一个简单的基于文本的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
非常感谢您的帮助。
答案 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,你可以使用你想要的任何东西但坚持它,不要混淆它们,因为你可能会发现意想不到的行为。
希望这有帮助!