pprintの表示書式について

クラスの表示

クラスやインスタンスをpprintで表示すると、プロパティ関係は何も表示されません。

例 クラス、インスタンスの表示

from pprint import pprint

class Test:
  def __init__(self):
    self.title = '題名'
    self.name = '名前'

test = Test()

pprint(Test)  # クラスTestの表示
pprint(test)  # インスタンスtestの表示
これを実行すると以下のように表示されます。
<class '__main__.Test object at 0x7f450299c128>    # クラスTestの表示
<class '__main__.Test'>    # インスタンスtestの表示

表示書式のカスタマイズ

クラスのpprint表示の書式を変更する場合、__repr__メソッドで書式の指定を行います。

from pprint import pprint

class Test:
  def __init__(self):
    self.title = '題名'
    self.name = '名前'

  def __repr__(self):
    # プロパティの名前と値を配列にする
    data = []
    for key, value in self.__dict__.items():
      data.append(key + ':' + str(value))  

    result = 'Class:' + self.__class__.__name__ + ' ('
    result += ','.join(data) + ')'
    return result

test = Test()
pprint(test)
実行すると以下のように表示されます。
Class:Test (name:名前,title:題名)