Pythonのstr()関数と__str__メソッドの役割とは?オブジェクト指向プログラミングでの使い方を解説
Pythonのオブジェクト指向プログラミングでは、str()関数や__str__メソッドを使うことで、オブジェクトを人間が読みやすい文字列として表現できます。本記事では、これらの仕組みと実際の使い方について詳しく解説します。
__str__メソッドとは
__str__は、__init__と同様にPythonが自動的に呼び出す「特殊メソッド(ダンダーメソッド)」の一つです。このメソッドは、オブジェクトの「非公式な(informal)」文字列表現を返す役割を持っています。
デバッグ時やログ出力の際に、オブジェクトの中身を確認しやすくなるため、実務でも非常に役立つ機能です。なお、より厳密な(公式な)表現が必要な場合は__repr__メソッドを使用するのが一般的ですが、日常的な表示には__str__が適しています。
__str__メソッドの実装例
以下のコードは、Timeクラスに__str__メソッドを実装した例です。時刻を「時:分:秒」の形式の文字列として返します。
class Time:
def __str__(self):
return '%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second)
'%.2d'という書式指定子を使うことで、数値が常に2桁で表示されるようになっています(例:「7」→「07」)。
print()でオブジェクトを出力すると__str__が呼ばれる
__str__メソッドを実装したクラスのインスタンスをprint()関数やstr()関数に渡すと、Pythonは自動的に__str__メソッドを呼び出します。その結果、以下のように整形された文字列が出力されます。
>>> time = Time(7, 36)
>>> print(time)
07:36:00
もし__str__メソッドを実装していなければ、出力結果は<__main__.Time object at 0x...>のような、人間には理解しづらいオブジェクトのアドレス表現になってしまいます。
まとめ
__str__はオブジェクトの読みやすい文字列表現を返す特殊メソッドであるprint()やstr()を呼び出すと、自動的に__str__メソッドが実行される- デバッグやログ出力の際にオブジェクトの状態を確認するのに便利
独自クラスを作成する際に__str__メソッドを定義しておくと、コードの可読性とデバッグ効率が大きく向上します。ぜひ活用してみてください。
-
Pythonのraw_input()関数とは?役割とinput()との違いをわかりやすく解説
raw_input()関数の基本的な動作Python 2におけるraw_input()関数は、ユーザーに対してプロンプト(入力を促すメッセージ)を表示し、キーボードから入力されたデータを受け取り、その内容を文字列(str型)として返す関数です。引数は省略可能で、raw_input([arg])のように文字列を渡すと、それがそのままプロンプトとして画面に表示されます。以下は典型的な使用例です。name = raw_input(What is your name? ) print Hello, %s. % nameこのコードを実行すると、まず「What is your name? 」というプロンプ
-
Pythonのreload()関数とは?モジュールを再読み込みする方法を解説
Pythonのreload()関数とはPythonのreload(moduleName)関数は、すでに読み込まれているモジュールを再読み込み(リロード)するための機能です。モジュールを読み込む際は、通常どおり import moduleName の構文でインポートしておく必要があります。この関数は、対話型セッションでの利用を想定して設計されています。たとえば、モジュールのソースファイルを編集した後、Pythonインタプリタを終了して再起動することなく、変更内容をすぐにテストしたい場合に便利です。reload()の基本的な使い方以下は、モジュールを編集した後に再読み込みする基本的な例です。>