老師,我有點(diǎn)不明白: filter既然是一個(gè)類,那么filter(function,iterable)不就是調(diào)用構(gòu)造函數(shù)__init__得到一個(gè)filter對(duì)象了嗎,那它是怎么返回列表或迭代器的呢,__init__只能返回None的。我的想法錯(cuò)在哪里了呢[害羞]。
superbe
展開
老師,我有點(diǎn)不明白: filter既然是一個(gè)類,那么filter(function,iterable)不就是調(diào)用構(gòu)造函數(shù)__init__得到一個(gè)filter對(duì)象了嗎,那它是怎么返回列表或迭代器的呢,__init__只能返回None的。我的想法錯(cuò)在哪里了呢[害羞]。 T-g0vk7lcin
講師
展開
嗯嗯,filter是一個(gè)類,所以 obj=filter(function, iterable) ,這個(gè)obj就是通過(guò)filter類下面的構(gòu)造函數(shù)__init__實(shí)例化出來(lái)的對(duì)象。這沒問題,__init__確實(shí)只能返回None,但obj其實(shí)是一個(gè)可迭代對(duì)象,你看看filter源碼它實(shí)現(xiàn)了__iter__和__next__。當(dāng)你 list(obj)這樣操作時(shí),內(nèi)部會(huì)把 g = iter(obj), 然后循環(huán) next(g),最后得到一個(gè)列表哈 |
|
學(xué)習(xí)達(dá)人
|
KITADO
展開
|
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。