Python operator.attrgetterでオブジェクトの属性を取得する

operatorモジュールのattrgetter関数を使えば、オブジェクトから取得する属性名を動的に指定することができます。

■サンプルスクリプト
attrgetter_demo.py

import sys
from operator import attrgetter

class Book:
    def __init__(self, title, author, publisher, price):
        self._title = title
        self._author = author
        self._publisher = publisher
        self._price = price

if __name__ == '__main__':
    props = sys.argv[1:]

    book = Book('Python入門', '山田太朗', '佐々木出版', 1980)
    book_prop = attrgetter(*props)
    book_info = book_prop(book)

    print(book_info)

■実行結果

$ python attrgetter_demo.py _title _price
('Python入門', 1980)

参考文献

Fluent Python (オライリー) P.168