我有一个对象,我正在搜索属性title
是否与我的搜索匹配
class Something(object):
def __init__(self,title):
self.title = title
def __str__(self):
return "%s is the title " % self.title
如何在调用对象时打印对象?我正在寻找它。
search = " ".join(s[1:]).lower()
if any(search in str(a.title).lower() for a in something):
print filter(lambda x: search in str(x.title),something)
If any(...)
将检查搜索的任何部分是否与我的对象标题匹配,如果找到任何内容则返回true。
filter(...)
打印对象,但这里是我遇到问题打印的对象:
[<__main__.Something object at 0x0000000002C93B38>, <__main__.Something object at 0x0000000002D33828>]
我知道这是一个对象,为什么不通过__str__(self)
方法打印?如何从对象Something
中唤起打印功能?
答案 0 :(得分:0)
通常,我会先创建一个过滤器,以获取符合条件的项目。然后我会迭代它并用它做任何你想做的事情:
generator = (x for x in something if search in str(x.title).lower())
for item in generator:
print item
这里的优点是你提前进行过滤(没有filter
),你只进行一次过滤测试。
答案 1 :(得分:0)
您正在打印列表的字符串表示形式,而不是列表中的每个项目。
你可以这样做:
print map(str, filter(lambda x: search in str(x.title),something))