我有一个面向对象的程序,我制作了房间。每个房间都有价值,如北东南或下一个可以移动到的方向。
#ROOM CONSTRUCTOR
class Room(object):
#Constructor
def __init__(self, name, n_path, s_path, e_path, w_path, next_path, description):
self.name = name
self.description = description
self.north = n_path
self.south = s_path
self.east = e_path
self.west = w_path
self.next = next_path
这是我的房间构造函数。我的房间看起来像:
Northwest_Beach = Room('Northwest Beach',None, 'Mauna_Kea_Volcano', 'Volcano', None, Surf, 'Description goes here')
我想显示玩家可以去的所有方向。我试着这样做:
if Room(n_path):
print "---North"
我会对每个方向做同样的事情:南,东,西,和下一个。它告诉我n_path是未定义的。有没有更好的方法来做到这一点,或者我可以解决它?
答案 0 :(得分:1)
#ROOM CONSTRUCTOR
class Room(object):
#Constructor
def __init__(self, name, n_path, s_path, e_path, w_path, next_path, description):
self.name = name
self.description = description
self.north = n_path
self.south = s_path
self.east = e_path
self.west = w_path
self.next = next_path
Northwest_Beach = Room('Northwest Beach',None, 'Mauna_Kea_Volcano', 'Volcano', None, 'Surf', 'Description goes here')
print Northwest_Beach.north
# OUTPUT: None
您只是没有正确访问North的class属性,如上所示:
Northwest_Beach.north
答案 1 :(得分:0)
Room
是类的名称。您想指定对象。
如果相关代码位于其中一个Room
方法中,请尝试:
if self.north:
print "---North"
否则,请使用对象的名称,如下所示:
if Northwest_Beach.north:
print "--North"
或许您有一个变量可以承担用户碰巧所处的任何空间。如果是这样,您的代码将如下所示:
if current_room.north:
print "--North"
无论如何,您希望点(.
)的左侧是绑定到Room
(self
,Northwest_Beach
类型的对象的名称,或者current_room
),并且点的右侧是房间的属性之一,(north
,south
等。)
答案 2 :(得分:0)
在这一行:
if Room(n_path):
Room(n_path)
正在初始化一个新类,或者它至少会传入正确的参数,但是当你传入n_path
时你的变量n_path没有在任何地方定义,所以它抛出了这个异常
您已经设置了一个具有属性north
的类实例,方法是传入n_path
争论,您可以查看
Northwest_Beach.north