История изменений
Исправление rtxtxtrx, (текущая версия) :
In [1]: def str2(x):
...: return getattr(x, 'decode', lambda: str(x))()
...:
In [2]: str2(b'ko')
Out[2]: 'ko'
In [3]: str2('ko')
Out[3]: 'ko'
In [4]: str2({'ko'})
Out[4]: "{'ko'}"
А вообще это какая-то дурная идея… Странная проблема. Он еще JS не трогал, вот он где высрет кирпичи:
({
toString() { return super.toString().replace(/object/, 'govno') }
}) + 42
'[govno Object]42'
Исходная версия rtxtxtrx, :
In [1]: def str2(x):
...: return getattr(x, 'decode', lambda: str(x))()
...:
In [2]: str2(b'ko')
Out[2]: 'ko'
In [3]: str2('ko')
Out[3]: 'ko'
In [4]: str2({'ko'})
Out[4]: "{'ko'}"