getattr使い方
もう完全にpythonのことしか書いてない・・・(笑)
getattrで苦戦したので書き残しておく。
問題のコードは下。recordはオブジェクト。
for u in dir (record):
if u[0] != '__' :
print(u,getattr(record,u))
これが意味わからんかった。record内の属性をdir及びforで一つずつ書き出し、__()__の形ではないものを(!=はノットイコールの意味)プリントする。プリントの際に問題となるのがgetattr。教科書的な説明では
object の指名された属性の値を返します。 name は文字列でなくてはなりません。文字列がオブジェクトの属性の一つの名前であった場合、戻り値はその属性の値になります。例えば、 getattr(x, 'foobar')
は x.foobar
と等価です。指名された属性が存在しない場合、 default が与えられていればそれが返され、そうでない場合には AttributeError
が送出されます。
というもの。いろんなサイトを調べてよくわからなかったが、結局公式サイトの説明が一番わかりやすかった。getattrは指定されたオブジェクト及び属性の値を返すようだ。問題となったサンプルコードでは、
① for構文で属性を一つ取り出す
②printとgetattrにより、取り出した属性の値を文字列で返す。このときにu,が入っているため、属性の値だけでなく属性も返して見やすくしているようである。
とまあ、こんな感じ。理解すると簡単だけど理解するまでが難しいっす