クラス自体(クラスのインスタンスではない)のカスタム文字列表現を選択するにはどうすればよいですか?質問する

クラス自体(クラスのインスタンスではない)のカスタム文字列表現を選択するにはどうすればよいですか?質問する

次のクラスを考えてみましょう:

class foo(object):
    pass

デフォルトの文字列表現は次のようになります。

>>> str(foo)
"<class '__main__.foo'>"

これをカスタム文字列として表示するにはどうすればよいですか?


クラスのインスタンスに関する対応する質問については、「print() を使用してクラスのインスタンスを印刷する方法」を参照してください。

実際、この質問は、その質問の特殊なケースです。Python では、クラス自体も独自のクラスに属するオブジェクトであるためです。ただし、デフォルトの「クラスのクラス」が事前に定義されているため、アドバイスをどのように適用するかは直接的には明らかではありません。

ベストアンサー1

クラスのメタクラスに__str__()またはを実装します。__repr__()

class MC(type):
  def __repr__(self):
    return 'Wahaha!'

class C(object):
  __metaclass__ = MC

print(C)

読み取り可能な文字列化を意味する場合は を使用し__str____repr__明確な表現には を使用します。

編集: Python 3 バージョン

class MC(type):
  def __repr__(self):
    return 'Wahaha!'

class C(object, metaclass=MC):
    pass


print(C)

おすすめ記事