NoneType'对象没有'__getitem__'属性

2 投票
2 回答
52877 浏览
提问于 2025-04-18 09:07

我在使用 nova-list 这个命令时,遇到了一个错误,提示内容是:NoneType 对象没有 'getitem' 这个属性。

 DEBUG (shell:777) 'NoneType' object has no attribute '__getitem__'
    Traceback (most recent call last):
      File "/opt/stack/python-novaclient/novaclient/shell.py", line 774, in main
        OpenStackComputeShell().main(map(strutils.safe_decode, sys.argv[1:]))
      File "/opt/stack/python-novaclient/novaclient/shell.py", line 685, in main
        self.cs.authenticate()
      File "/opt/stack/python-novaclient/novaclient/v1_1/client.py", line 169, in authenticate
        self.client.authenticate()
      File "/opt/stack/python-novaclient/novaclient/client.py", line 382, in authenticate
        auth_url = self._v2_auth(auth_url)
      File "/opt/stack/python-novaclient/novaclient/client.py", line 469, in _v2_auth
        return self._authenticate(url, body)
      File "/opt/stack/python-novaclient/novaclient/client.py", line 484, in _authenticate
        return self._extract_service_catalog(url, resp, respbody)
      File "/opt/stack/python-novaclient/novaclient/client.py", line 307, in _extract_service_catalog
        self.auth_token = self.service_catalog.get_token()
      File "/opt/stack/python-novaclient/novaclient/service_catalog.py", line 29, in get_token
        return self.catalog['access']['token']['id']
    TypeError: 'NoneType' object has no attribute '__getitem__'
    ERROR: 'NoneType' object has no attribute '__getitem_

这是什么意思呢?是我的 OpenStack 设置有问题,还是说这是个 Python 相关的错误?

2 个回答

0

错误信息

TypeError: 'NoneType' object has no attribute '__getitem__'

原因

在调用一个函数时,如果在它的参数列表里调用了一个不返回任何值的方法,就会出现“NoneType”的错误。

解决办法

为了解决这个问题,我让那个不返回值的方法返回我在另一个函数参数列表里需要的值。

7

字面意思上,'NoneType' object has no attribute... 是说你在尝试访问一个值为 None 的东西的属性或者调用它的方法。

简单来说,这意味着你可能在某个地方有个错误,使用了一个还没有被赋值的变量,或者用了一个返回 None 的函数的值。解决这个问题的第一步是问自己:“为什么这个变量会是 None?”

在这个具体的例子中,可能是 self.catalogself.catalog['access'] 或者 self.catalog['access']['token'] 的值是 None

撰写回答