我正在尝试从名为quest.py
的文件中的类访问实例变量。
在当前文件room.py
中,我试图在每个类的变量之间执行布尔语句,但是每次我尝试在quest.py
文件中调用变量时,它只是说我尚未定义。
但是,我有一个名为simulation.py
的单独文件,该文件导入所有这些文件并为这些类创建对象,这就是我正在运行的文件。
例如,我运行模拟文件,该文件应立即绘制房间的图片并提供您所在房间的描述。
但是此描述会根据在此房间中是否完成任务而改变。
但是我无法访问当前房间类中位于任务类中的这些描述。
有什么想法吗?我最终试图运行此绘图功能。
我无法在这些单独的文件中的类之外编写任何代码。此代码的大部分必须位于仿真文件中。
room.py:
class Room
def __init__(self, name):
"""Initialises a room. ."""
self.name = name
self.north = "N" ##Exits...
self.south = "-"
self.east = "|"
self.west = "|"
def get_short_desc(self):
desc = 'There is nothing in this room.'
if q.get_room_name() == self.name:
if q.quest_complete == True:
desc = self.after
elif q.quest_complete == False:
desc = self.before
return desc
def draw(self):
""" Creates a drawing depicting the exits in each room."""
print("+---------{}{}---------+".format(self.north,self.north))
print("| |")
print("| |")
print("| |")
print("| |")
print("{} {}".format(self.east,self.west)) ## The list of east and west changes depending on the room
print("| |")
print("| |")
print("| |")
print("| |")
print("+---------{}{}---------+".format(self.south,self.south))
print("You are standing at the {}.".format(self.name)) # the name of the room
desc = r.get_short_desc()
print(desc)
return self.name
quest.py:
class Quest
def __init__(self, reward, action, desc, before, after, req, fail_msg, pass_msg, room):
""" Initialises a quest."""
self.reward = reward
self.action = action
self.desc = desc
self.before = before
self.after = after
self.req = req
self.fail_msg = fail_msg
self.pass_msg = pass_msg
self.room = room
self.quest_complete = False
def get_room_name(self):
return self.room #so i can access the instance variable of "room" in other classes
先前的代码被导入到Simulation.py文件中,该文件已运行:
from room import Room
from quest import Quest
r = Room(rooms[3]) ##one room example
q = Quest(quest_list[0][0],quest_list[0][1],quest_list[0][2],quest_list[0][3],quest_list[0][4],quest_list[0][5],quest_list[0][6],quest_list[0][7],quest_list[0][8]) ##i have already created a list containing quests, this is just one quest example
r.draw()
预期输出为:
+---------NN---------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+--------------------+
You are standing at the Entrance.
There is nothing in this room
返回一个字符串,其中包含对房间的简短描述。此描述会根据相关任务是否已在此会议室中完成而更改。如果没有与此房间相关的任务,则应该返回:There is nothing in this room.
我收到的错误是:
“”“您正站在入口处。
回溯(最近一次通话最后一次):文件“ simulation.py”,位于第1行 从房间导入房间
文件“ /home/andrewb/Documents/vscode.py/Adventure_Scaffold/room.py”, 第89行,在 r.draw()
文件“ /home/andrewb/Documents/vscode.py/Adventure_Scaffold/room.py”, 第72行,平局 desc = r.get_short_desc()
文件“ /home/andrewb/Documents/vscode.py/Adventure_Scaffold/room.py”, 第20行,在get_short_desc中 如果q.get_room_name()== self.name:NameError:未定义名称'q'“”