0

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 属性が必要なようです。私の構文は間違っていますか?

4

1 に答える 1

0

わかりました、これが python の連絡先サンプルと私の実装の問題です: gdata/sample/contacts/contacts_example.py では、gdata.contacts.Client を使用しますdesired_class=gdata.contacts.data.ContactsFeed。質問で指摘されているように、このサービスはconverter=gdata.contacts.ContactsFeedFromString. このコンバーターは、クラス定義と同様に、 init
ファイル src/gdata/contacts/init.py から取得されます。明らかに、この時点で、これから何が起こるかがわかります。初期化子の xml のクラスは、データ ファイルのクラスと一致しません。これらの欠落した不適切なものを初期化子に追加したところ、期待どおりに機能しました。または、desired_class を使用するように変更することもできます (ある時点でコンバーターにマップする必要があります... service.py では直接サポートされていません)、またはコンバーターを data.ContactsFeed などに追加します。

これが誰かに役立つことを願っています。

于 2013-10-17T14:03:49.470 に答える