あなたの場合、あなたが望むかもしれないものは次のとおりです:
"flickr = flickrapi.FlickrAPI(api_key)
photos = flickr.photos_search(user_id='73509078@N00', per_page='10')
sets = flickr.photosets_getList(user_id='73509078@N00')"
- flickrapi ドキュメント
つまり、返された を取得しXML doc
てオブジェクトとして提供するElementTree
ので、処理が簡単になります。(これがsets
オブジェクトです)。残念ながら、写真オブジェクトはそれを行うことができません。
ElementTree ドキュメント
したがって、属性の一般的なリストを取得するには、まず、渡されたツリーのルート ノードの メソッド.tag
とメソッドを使用します。.attrib
root
ElementTree docs の例のようにセットを使用できます:)
それが与える使用例は次のとおりです。
sets = flickr.photosets_getList(user_id='73509078@N00')
sets.attrib['stat'] => 'ok'
sets.find('photosets').attrib['cancreate'] => '1'
set0 = sets.find('photosets').findall('photoset')[0]
+-------------------------------+-----------+
| variable | value |
+-------------------------------+-----------+
| set0.attrib['id'] | u'5' |
| set0.attrib['primary'] | u'2483' |
| set0.attrib['secret'] | u'abcdef' |
| set0.attrib['server'] | u'8' |
| set0.attrib['photos'] | u'4' |
| set0.title[0].text | u'Test' |
| set0.description[0].text | u'foo' |
| set0.find('title').text | 'Test' |
| set0.find('description').text | 'foo' |
+-------------------------------+-----------+
... and similar for set1 ...
-flickrapi ドキュメント
あなたが間接的に尋ねていたかもしれない別の質問:
一般に、Pythonclass
を指定すると、次のことができます。
cls.__dict__
使用可能な属性の一部を取得します。
使用できる一般的な python オブジェクトが与えられた場合、vars(obj)
またはdir(obj)
例えば:
class meh():
def __init__(self):
self.cat = 'dinosaur'
self.number = 1
# some example methods - don't actually do this
# this is not a good use of a method
# or object-oriented programming in general
def add_number(self, i):
self.number+=i
j = meh()
print j.__dict__
{'number': 1, 'cat': 'dinosaur'}
これは、オブジェクトに使用される名前空間の dict を返します。
「1つを除いて。モジュールオブジェクトには、モジュールの名前空間を実装するために使用される辞書を返すdictと呼ばれる秘密の読み取り専用属性があります。名前dictは属性ですが、グローバル名ではありません。明らかに、これを使用すると、名前空間実装の抽象化に違反します、事後分析デバッガーなどに制限する必要があります。」- Python ドキュメント
dir
戻り値
「引数がない場合は、現在のローカル スコープ内の名前のリストを返します。引数がある場合は、そのオブジェクトの有効な属性のリストを返そうとします。」ドキュメント
と
vars
dict属性を返すだけです。
"モジュール、クラス、インスタンス、または dict 属性を持つその他のオブジェクトのdict属性を返します。
モジュールやインスタンスなどのオブジェクトには、更新可能なdict
属性があります。ただし、他のオブジェクトではdict属性に書き込み制限がある場合があり
ます (たとえば、新しいスタイルのクラスは dictproxy を使用して辞書の直接更新を防ぎます)。" docs
オブジェクトを変更するために行うことができる狡猾な行為のために、実行時にオブジェクトに利用可能なすべてを提供できるものは何もないことに注意してください。