我正在使用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
;您要求集合成员:
sr.smembers('UNTESTED')
关于python - AttributeError:和Python的范围?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31460428/