AttributeError: 'contactObject' object has no attribute

AttributeError: 'contactObject' object has no attribute

这是我的功能:

def get_content(self):
    full_results = []
    for res in self._get_data():  #function that returns suds object
        final_dict = dict(res)
        final_dict.pop('readOnlyContactData', None)
        if res["readOnlyContactData"] is not None: 
            readOnlyContactData_dict = dict(res["readOnlyContactData"])
            final_dict.update(readOnlyContactData_dict)
    full_results.append(final_dict)
    return full_results

但是在运行它时我得到:

INFO - if res["readOnlyContactData"] is not None:
INFO - File "/home/ubuntu/.local/lib/python3.6/site-packages/suds/sudsobject.py", line 154, in __getitem__
INFO - return getattr(self, name)
INFO - AttributeError: 'contactObject' object has no attribute 'readOnlyContactData'
INFO - Command exited with return code 1

我不明白为什么它会失败 if 条件假设检查 res["readOnlyContactData"] 是否存在。如果它确实处​​理了它,如果没有则忽略它。

为什么这个条件不成立?

在 python 中,使用 variable['key'] 语法在内部调用 __getitem__('key') 来检索正确的元素。在您的情况下,错误表明 __getitem__() 内部调用 getattr(),通常用于检索 class 成员或实例变量。

File "/path/to/sudsobject.py", line 154, in __getitem__
    return getattr(self, name)
AttributeError: 'contactObject' object has no attribute 'readOnlyContactData'

因此,根据您提供的信息,调用 res["readOnlyContactData"] 似乎等同于调用 res.readOnlyContactData。由于在您的对象(contactObject 类型)中找不到 readOnlyContactData 属性,您会收到此错误。

尝试以下语句来检查您的对象是否有您要查找的成员:

>>> # this has to be implemented in your class
>>> "readOnlyContactData" in res

>>> hasattr(res, "readOnlyContactData")

if 条件检查 res["readOnlyContactData"] 中的元素是否为 None。因此,如果 res 没有任何名为 "readOnlyContactData" Python returns 的索引,则异常 Object has no attribute。你应该尝试 hasattr(res, "readOnlyContactData")

而不是 if 语句