引数を取らず、文字列形式を使用して呼び出したい文字列を返す関数があります。ここにあり、これが私が使用しようとした方法format
です:
def cabbages():
return 'hello'
In [2]: '{cabbages} world'.format(**locals())
Out[2]: '<function cabbages at 0x101f75578> world'
In [3]: '{cabbages()} world'.format(**locals())
KeyError: 'cabbages()'
したがって、どちらも私が望むもの、つまり の値ではありませんcabbages()
。
PEP 3101string.Formatter
は、上書きできるいくつかの方法を説明していますが、多くの例を示しているようには見えません。これを行うには、文字列クラスをサブクラス化/カスタマイズするにはどうすればよいFormatter
ですか?
私が考えたハックなことは、の__getattr__
メソッドを上書きすることでありcabbages
、「病理学的と見なされる」(または、少なくとも*その*病理学的)ことは本当に望んでいません。