2016-10-06 2 views
0

Ich habe Klasse Etwas mit wenigen Objekten:Wie Objekt aus der Liste wählen und drucken ihren Namen

class Something(): 
def __init__(self, name, attr1, attr2): 
    self.name= name 
    self.attr1= attr1 
    self.attr2= attr2 

def getName(self): 
    return self.name 

Obj1=Something('Name1', 'bla bla1', 'bla bla2') 
Obj2=Something('Name2', 'bla bla3', 'bla bla4') 

Diese Objekte in der Liste gespeichert sind:

objects = [Obj1, Obj2] 

Ich möchte von der gedruckten Objekt auszuwählen Liste und dann (wenn Objekt in der Liste ist) drucken Sie seinen Namen. Bisher habe ich den Code unten geschrieben, aber es funktioniert nicht. mit Fehler (Attribute: ‚str‘ Objekt hat kein Attribut ‚getNazwa‘)

print('Select object from list: ', objects) 
y=raw_input('enter the name of the object') 

for i in objects: 
    if y == i: 
     print "Name: " + i.getName() 

Wenn Druckliste es someting wie folgt aus:

('Select object fromfrom list: ', [<__main__.Something instance at 0x024FB440>, <__main__.Something instance at 0x024FB490>]) 

Wie es in den Druck Name Objekte konvertieren?

Ich denke, diese Lösung keine Wissenschaft für sie ist, so jemand kann mir helfen;)

+0

Einsatz 'if y == i.name:' ​​ –

+0

In Ihrem Codebeispiel wird 'getNazwa' nicht verwendet. Der Code, der hier gepostet wird, wird keine Ausnahme auslösen (sobald wir den Einrückungsfehler in der Klassendefinition korrigiert haben). Bitte fügen Sie eine * vollständige Rückverfolgung * des Fehlers hinzu. –

+0

aus irgendeinem Grund wird 'i' als eine Zeichenfolge betrachtet, Sie haben sicher eine Liste von Klassen' objects' und nicht 'strings'? –

Antwort

0

Sache ist, dass Sie String in ein Objekt hier vergleichen:

if y == i: 

so sollten Sie entweder Blick auf __eq__ Methode Ihrer Klasse oder Eingabestring vergleichen mit OBJ Namen wie:

if y == i.getName() 
0

in Ihren Zeilen:

for i in objects: 
    if y == i: 

i ist ein Objekt, und y in einem String, so dass man sie nicht vergleichen kann

Sie können jedoch

for i in objects: 
    if y == i.getName(): 

tun so vergleichen Sie zwei Strings zusammen

Verwandte Themen