我有几个对象很少的东西:
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>])
如何将其转换为打印对象名称?
我想这个解决方案对于你们来说不是火箭科学,所以有人会帮助我;)
答案 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():
所以你要比较两个字符串