在面向对象代码python中检查对象是否有值

2024-05-16 19:59:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个面向对象的程序,有我自己做的房间。每个房间都有一些值,例如北-南-东-西或下一个是您可以移动到的方向。你知道吗

#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\u路径是未定义的。有没有更好的办法,或者我能解决的办法?你知道吗


Tags: pathnameself程序nonedescription面向对象方向
3条回答

Room的名称。您想指定一个对象。你知道吗

如果有问题的代码在某个Room方法中,请尝试:

if self.north:
    print " -North"

否则,请使用对象的名称,如下所示:

if Northwest_Beach.north:
    print " North"

或者,您可能有一个变量,它代表用户恰好所在的任何房间。如果是这样,您的代码将如下所示:

if current_room.north:
    print " North"

无论如何,您希望点的左侧(.)是绑定到类型为RoomselfNorthwest_Beachcurrent_room)的对象的名称,而点的右侧是房间的属性之一(northsouth,等等)。你知道吗

#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

在此行中:

if Room(n_path):

Room(n_path)正在初始化一个新类,或者它至少会传入正确的参数,但是当传入n_path时,变量n\u路径没有在任何地方定义,因此它会引发此异常。你知道吗

您已经有了一个类实例,它的属性north是通过传入可以检查的n_path参数设置的

Northwest_Beach.north

相关问题 更多 >