使用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属性。 我的语法错了吗?
答案 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等。
希望这有助于某人。