【发布时间】:2020-09-26 14:17:14
【问题描述】:
class GameLogic(object):
def __init__(self):
self._player = Player(7)
class Player(object):
def __init__(self,move_count):
self.move_count = move_count
这不是我的原始代码。我简化了原始代码以显示我的错误。
我的部分原始代码在下面
class GameLogic:
def __init__(self, dungeon_name="game1.txt"):
"""Constructor of the GameLogic class.
Parameters:
dungeon_name (str): The name of the level.
"""
self._dungeon = load_game(dungeon_name)
self._dungeon_size = len(self._dungeon)
#you need to implement the Player class first.
self._player = Player(GAME_LEVELS[dungeon_name])
#you need to implement the init_game_information() method for this.
self._game_information = self.init_game_information()
self._win = False
class Player(Entity):
def __init__(self,move_count):
super().__init__()
self.move_count = move_count
self._name = 'Player(\'O\')'
self._player_position = player_position
self._inventory = []
def get_id(self):
entity_id = {self:'O'}
return entity_id.get(self)
def can_collide(self):
return super().can_collide()
def set_collide(self, collidable):
return super().set_collide(collidable)
def __str__(self):
return "{0}".format(self._name)
def __repr__(self):
return "{0}".format(self._name)
def get_position(self):
return self._player_position
def set_position(self,position):
self._player_position.pop()
self._player_position.append(position)
def change_move_count(self,number):
self.move_count += number
def moves_remaining():
return self.move_count
def add_item(self,item):
self._inventory.append(str(item))
def get_inventory(self):
return self._inventory
当我尝试运行它时,它会调用 NameError:
Traceback (most recent call last):
File "a2.py", line 25, in __init__
self._player = Player(GAME_LEVELS[dungeon_name])
NameError: name 'Player' is not defined
【问题讨论】:
-
感谢您提供错误回溯。但是,我无法从您的第一个 sn-p 中重现该错误。当我添加时:
g = GameLogic()我没有收到任何错误,但代码运行得很好。我从您的回溯中看到代码在a2.py中。GameLogic和Player都在这个文件中吗? -
是的,第一段代码是某种简化的a2.py,但它们并不相同。我用它来看看哪里出了问题。第一段代码似乎有效,但 a2.py 返回错误回溯。我不知道如何处理。
-
也许我应该发布一个完整的代码。
-
我们需要更多细节才能重现错误,
-
顺便说一句,你有这样的方法:
can_collide(),它只是调用super().can_collide()。这些是多余的,因为您的类将默认继承这些。