APIのXML応答を構築するライブラリを構築しようとしています。私の問題を説明するために、ここに2つのサンプルAPI応答があります。1つ目はメニューを表示するためのもので、2つ目はテキストを表示するためのものです。
<CiscoIPPhoneMenu>
<Title>Title text goes here</Title>
<Prompt>Prompt text goes here</Prompt>
<MenuItem>
<Name>The name of each menu item</Name>
<URL>The URL associated with the menu item</URL>
</MenuItem>
<SoftKeyItem>
<Name>Name of soft key</Name>
<URL>URL or URI of soft key</URL>
<Position>Position information of the soft key</Position>
</SoftKeyItem>
</CiscoIPPhoneMenu>
..。
<CiscoIPPhoneText>
<Title>Title text goes here</Title>
<Prompt>The prompt text goes here</Prompt>
<Text>The text to be displayed as the message body goes here</Text>
<SoftKeyItem>
<Name>Name of soft key</Name>
<URL>URL or URI of soft key</URL>
<Position>Position information of the soft key</Position>
<SoftKeyItem>
</CiscoIPPhoneText>
さて、私のモジュールのアウトラインは次のようになります。
class CiscoIPPhone(object):
def __init__(self, title=None, prompt=None):
self.title = title
self.prompt = prompt
class MenuItem(object):
def __init__(self, name, url):
self.name = name
self.url = url
class CiscoIPPhoneMenu(CiscoIPPhone):
def __init__(self, *args, **kwargs):
super(CiscoIPPhoneMenu, self).__init__(*args, **kwargs)
self.items = []
def add_menu(self, name, url):
self.items.append(MenuItem(name, url))
注:読みやすくするために、これらのクラスが処理する検証とサニタイズを削除しました。
だから私の質問は:
- 私は実際にこれらのオブジェクトのシリアル化された表現を出力していますが、これは間違っているか悪い習慣と見なされていますか?
- この種のAPIインターフェースクラスを説明するデザインパターンはありますか?
- 似たようなことをするエレガントに書かれた(Pythonic)Pythonライブラリはありますか?(私は、Djangoのモデルシリアル化の簡略版、またはDjango-Tastypieのように考えています)。