gdata AttributeError:'ContactEntry'对象没有属性'name'

时间:2013-10-16 20:35:32

标签: python gdata gdata-api google-shared-contacts google-profiles-api

使用GData Python库,版本2.0.18

尝试使用服务方法检索联系人列表(不是像示例应用程序那样的客户端)。似乎返回映射到ContactEntry(好),但是当我尝试访问name属性时它会出错:

AttributeError:'ContactEntry'对象没有属性'name'

from gdata.contacts.service import ContactsService
(...)
        self.client = ContactsService(source='appname', additional_headers=additional_headers )
        feed = self.client.GetContactsFeed(uri=query.ToUri())

self.client是一个gdata.contacts.service

GetContactsFeed使用

def GetContactsFeed(self, uri=None):
    uri = uri or self.GetFeedUri()
    return self.Get(uri, converter=gdata.contacts.ContactsFeedFromString)

示例代码使用desired_class=gdata.contacts.data.ContactsFeed

似乎应该有一个name属性。 我的语法错了吗?

1 个答案:

答案 0 :(得分:0)

好的,这是python contacts sample与我的实现的问题: 在gdata / sample / contacts / contacts_example.py中,它使用gdata.contacts.Client(长链到它)调用atom类来使用desired_class=gdata.contacts.data.ContactsFeed。 如问题所述,该服务使用converter=gdata.contacts.ContactsFeedFromString 此转换器来自init文件src / gdata / contacts / init .py,类定义也是如此。显然,在这一点上,你知道将要发生什么 - 初始化器中xml的类与数据文件中的类不匹配。 我将这些缺失的,不正确的内容添加到初始化程序中,并且按预期工作。或者,更改为使用desired_class也会这样做(在某些时候你必须映射到转换器...不直接在service.py中支持),或者将转换器添加到data.ContactsFeed等。

希望这有助于某人。