Skip to main content
 首页 » 编程设计

python之属性错误 : and scope in python

2025年05月04日38langtianya

我正在使用 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')