问题描述:
我正在使用 pymongo ,Cursor.find() 函数返回一个可迭代的 results ,比如
results = c.find()
for i in c:
print i
但是 i 是一个 dict ,因此不能这样使用 i.name, 而必须是 i['name']
所以我希望可以通过修改 c 的 next 函数让 i 变成 storage 类型(一种可以通过 i.name 代替 i['name']的类)
因此我使用了如下的办法:
这里的 c 如果为 instance 时此方法是可行的,但是 c 却是一个 Class ,因此此法行不通
读了一下 pymongo 的代码(/usr/lib/python2.7/dist-packages/pymongo )也没有找到原因
我想问的问题是:
1 、find 函数是如何返回 class ,而不是 instance 的? def find 的最后一句是:
return Cursor(self, *args, **kwargs)
2 、pymongo 是如何让 c (<class 'pymongo.cursor.Cursor'>)可迭代的?
3 、如何实现我想要的功能?
我正在使用 pymongo ,Cursor.find() 函数返回一个可迭代的 results ,比如
results = c.find()
for i in c:
print i
但是 i 是一个 dict ,因此不能这样使用 i.name, 而必须是 i['name']
所以我希望可以通过修改 c 的 next 函数让 i 变成 storage 类型(一种可以通过 i.name 代替 i['name']的类)
因此我使用了如下的办法:
这里的 c 如果为 instance 时此方法是可行的,但是 c 却是一个 Class ,因此此法行不通
读了一下 pymongo 的代码(/usr/lib/python2.7/dist-packages/pymongo )也没有找到原因
我想问的问题是:
1 、find 函数是如何返回 class ,而不是 instance 的? def find 的最后一句是:
return Cursor(self, *args, **kwargs)
2 、pymongo 是如何让 c (<class 'pymongo.cursor.Cursor'>)可迭代的?
3 、如何实现我想要的功能?