2016-04-13 6 views
-2

Ich habe ein objektorientiertes Programm mit Räumen, die ich gemacht habe. Jedes Zimmer hat Werte wie Nord-Süd-Ost-West oder die nächsten Richtungen, in die Sie sich bewegen können.Prüfe, ob Objekt einen Wert in objektorientiertem Code hat - 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 

Das ist mein Zimmer Konstruktor. Mein Zimmer würde aussehen wie:

Northwest_Beach = Room('Northwest Beach',None, 'Mauna_Kea_Volcano', 'Volcano', None, Surf, 'Description goes here') 

Ich möchte alle möglichen Richtungen anzeigen, die der Spieler gehen kann. Ich habe versucht zu tun:

if Room(n_path): 
    print "---North" 

ich das gleiche für jede Richtung tun würde: Süd, Ost, West, & nächsten. Es sagt mir, dass n_path nicht definiert ist. Gibt es einen besseren Weg, dies zu tun, oder kann ich es beheben?

Antwort

0

Room ist der Name der Klasse. Sie möchten ein Objekt angeben.

Wenn der Code in Frage in einem der Room Methoden, versuchen:

if self.north: 
    print "---North" 

Andernfalls verwenden Sie den Namen des Objekts, etwa so:

if Northwest_Beach.north: 
    print "--North" 

Oder vielleicht Sie haben Variable, die den Raum annimmt, in dem sich der Benutzer gerade befindet. Wenn ja, würde Ihr Code wie folgt aussehen:

if current_room.north: 
    print "--North" 

Unabhängig davon möchten Sie, dass die linke Seite des Punkts (.) ein Name ist, der an ein Objekt vom Typ Room (self, Northwest_Beach oder current_room) gebunden ist und die rechte Seite des Punkts eines der Attribute von a ist Zimmer, (north, south usw.).

0

In dieser Zeile:

if Room(n_path): 

Room(n_path) wird eine neue Klasse zu initialisieren, oder es würde in den richtigen Argumenten zumindest vorbei, aber wenn man in n_path Ihre Variable n_path passieren wird überall nicht so definiert, dass es wirft diese Ausnahme.

Sie haben bereits eine Instanz der Klasse mit dem Attribut north festlegen, indem Sie einfach in der n_path arguement vorbei

überprüfen
Northwest_Beach.north 
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 

Sie sind einfach nicht die Klasse Attribut für Nord richtig zugreifen, wie oben angezeigt verwenden:

Northwest_Beach.north 
Verwandte Themen