如何从列表中选择对象并打印其名称

时间:2016-10-06 11:46:44

标签: python class object

我有几个对象很少的东西:

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')

这些对象存储在列表中:

objects = [Obj1, Obj2]

我想从打印列表中选择对象,然后(如果对象在列表中)打印其名称。 到目前为止,我编写了下面的代码,但它不起作用。有错误(AttributeError:'str'对象没有属性'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()

当打印列表时,它就像那样:

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

如何将其转换为打印对象名称?

我想这个解决方案对于你们来说不是火箭科学,所以有人会帮助我;)

2 个答案:

答案 0 :(得分:0)

事情就是你在这里将字符串与一个对象进行比较:

if y == i:

因此您应该查看类的__eq__方法,或者将输入字符串与obj名称进行比较,如:

if y == i.getName()

答案 1 :(得分:0)

在您的行中

for i in objects:
    if y == i:

我是一个对象,y是一个字符串,所以你不能比较它们

然而,你可以做到

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

所以你要比较两个字符串