我正在使用 Flask 和 Redis 开发应用程序。在我的脚本中我有:
import test
@app.route('/')
def main():
test.main()
return 'Hello World!'
在 test.py 中,我有:
sr = StrictRedis()
def main():
......
......
如果我在 main() 中单步执行我的代码,在控制台中我有:
>>> sr
StrictRedis<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>
>>> sr.members('myset')
我得到:
AttributeError: 'StrictRedis' object has no attribute 'members'
我还注意到,当我键入“sr.”时,没有可用的自动完成功能。
这与 python 作用域有关吗?
编辑:
>>> sr
StrictRedis<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>
>>> sr.StrictRedis.smembers('UNTESTED')
Traceback (most recent call last):
File "c:\env\flenv\lib\site-packages\IPython\core\interactiveshell.py", line 3035, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-3-aefe6f099eac>", line 1, in <module>
sr.StrictRedis.smembers('UNTESTED')
AttributeError: 'StrictRedis' object has no attribute 'StrictRedis'
即使我手动输入它仍然没有属性。有趣的是,如果我在 pycharm 编辑器中输入“sr.”,我会获得所有方法并且它会按预期工作。
请您参考如下方法:
这与作用域无关;您能够访问 sr 名称,这是范围界定结束和属性查找开始的地方。
您的 sr 对象(StrictRedis 类的实例)根本没有 members 属性。 StrictRedis documentation似乎并没有表明应该有任何东西。
也许您正在寻找 StrictRedis.smembers() method反而?注意名称开头的 s;您要求set 成员:
sr.smembers('UNTESTED')
