Pythonでオブジェクトを式の文字列に変換するにはどうすればよいですか?
Pythonのstr()関数は、オブジェクトを人間が読みやすい文字列表現に変換します。一方、Pythonにはrepr()という別の関数も用意されており、こちらはオブジェクトを「式の文字列」、つまり元のオブジェクトを再構築できるような形式に変換します。
__str__と__repr__の違い
- __repr__:曖昧さのない(unambiguous)表現を目指します。デバッグや開発時に役立ち、多くの場合、その出力をeval()に渡すと同じ内容のオブジェクトを再現できます。
- __str__:読みやすい(readable)表現を目指します。print()関数やstr()関数から呼び出されます。
__repr__は、オブジェクトの「公式」の文字列表現を計算するために使用されます。独自のクラスを定義する際に__repr__メソッドを実装しておくと、デバッグやログ出力の際に非常に便利です。
例
この2つの違いを理解するために、datetimeモジュールを使った例を見てみましょう。
import datetime today = datetime.datetime.now() str(today) repr(today)
出力
上記のコードを実行すると、次のような結果が得られます。
'2018-04-08 11:25:36.918979' 'datetime.datetime(2018, 4, 8, 11, 25, 36, 918979)'
結果の考察
出力からわかるように、str()は「2018-04-08 11:25:36.918979」のように、人間にとって見やすい整形された日時文字列を返します。一方、repr()は「datetime.datetime(2018, 4, 8, 11, 25, 36, 918979)」のように、オブジェクトのコンストラクタ呼び出し形式の表現をそのまま返します。このrepr()の出力をeval()に渡せば、同じ内容のdatetimeオブジェクトを再現できる点が大きな特徴です。
-
文字列をJavaScriptオブジェクトに変換する方法【JSON.parse()の使い方】
JavaScriptでJSON形式の文字列をオブジェクトに変換するには、JSON.parse()メソッドを使用します。このメソッドは、引数に渡された文字列を解析(パース)し、対応するJavaScriptオブジェクトを返します。 サンプルコード <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Docum
-
Pythonで文字列をバイナリ(2進数)に変換する方法をわかりやすく解説
Pythonで文字列をバイナリに変換する基本の考え方Pythonで文字列をバイナリ(2進数)表現に変換するには、文字列内の各文字を1つずつ取り出し、それぞれを2進数へ変換したうえで、結果をひとつの文字列として連結します。各文字の文字コードは ord() 関数で取得でき、format() 関数に「b」フォーマット指定子を渡すことで、簡単に2進数形式へ整形できます。format() と ord() を使った変換方法最もシンプルなのが、format(ord(x), b) を使って各文字 x を2進数の文字列に変換する方法です。次の例では、文字列 hello world の各文字をスペース区切りのバイ