私が欲しいもの
この例では、を使用せずに Unicode 文字列を表示したいと思いますprint
。
In [1]: a = u's·A/m'
In [2]: type(a)
Out[2]: str
In [3]: a
Out[3]: 's\xc2\xb7A/m'
In [4]: print a
s·A/m
文字列を強制的__repr__
に表示しないs\xc2\xb7A/m
ようにする方法はs·A/m
?
ユースケースは何ですか?
たとえば、その単位に関連する数値を表すクラスがあります。
class MyNumber(float):
def __new__(cls, ...):
...
def __repr__(self):
return str(self) + str(self.units)
IPython で作業しているとき、インスタンスの内容をすばやく確認したいと思います。
>>> a = MyNumber('23.43', ampere=1, second=1, meter=-1)
>>> a
23.43 s·A/m
代わりに、例外が発生します。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 11: ordinal not in range(128)
そして、私のコンテンツを手動で見ようとすると、次の__repr__
ようになります。
>>>a.__repr__()
23.43 s\xc2\xb7A/m