我有一個對象列表中,我在尋找,如果我的搜索屬性title
比賽搜索包含對象屬性和打印/返回對象的Python
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
?
你們對我的發電機對象是非常有用的。既然你把它放在'()'中,你已經使它成爲一個非迭代對象。但是,如果我把它放在'[]'中,會改變發生器對象的功能嗎?它表明它在我身邊工作,所以'()'和'[]'之間有什麼區別嗎? – lzc
一個生成器只能搜索一個對象的屬性嗎?假設我還想搜索'Something.anotherAttr'或'AnotherObj.title',爲此我需要創建另一個生成器對象。 – lzc
@czl - 關於你的第一個問題,'(... for ... in ...)'是一個生成器表達式。 '[... for ... in ...]'是一個列表理解。第一個創建一個可以迭代的對象,而不是其他的。第二個創建一個「列表」。首先是內存有效率,因爲它不存儲值 - 它只是在需要時計算它們。第二個很好,因爲在一天結束時,你有一個易於使用的清單。 – mgilson