日々精進

新しく学んだことを書き留めていきます

str([elem])はelemの__repr__を呼び出す

str()でlistをシリアライズしようと思ったときのこと。 各クラスの文字列表現を変更したかったので strを各クラスで実装し、listに詰めてstr(lst)のようにstr()に渡したがstrが呼ばれない。。 調べてみると、str(lst)はlstの各要素のreprを呼ぶらしい。lstはstr()でシリアライズしているのに。。

あと、f-stringで文字列化するときも文字列に埋め込んだ変数のreprが呼ばれるらしい。

しょうが無いのでreprに自前のシリアライズロジックを実装した。