使用__str__而不是__repr__

时间:2015-05-11 10:23:53

标签: python

我有一个抽象类(称为AbstractSparseVector),其最重要的特性是字典(称为dict)。所以在__repr__函数中我只调用str(self.dict)。

现在,实现子类在该字典中都具有不同类型的值。一个只有一个浮点数,另一个包含3个元素的元组:boolean,string,string。后一类的字符串可以包含特殊字符,例如'ö',但打印我的AbstractSparseVector会将该字符更改为'\ xc3 \ xb6g'。

现在从this回答我明白这是因为字典调用元组的__repr__,它返回错误的'\ xc3 \ xb6g'字符。如果它调用__str__,它将正确打印。

有没有很好的方法来实现这个目标?

到目前为止,我唯一的解决方案是迭代字典的键值对,然后遍历元组,以便我可以获得这些字符串的__str__表示而不是__repr__表示和拼接我自己的输出字符串togeter。

这很丑陋且也不切实际,因为AbstractSparseVector的每个子类都必须实现自己的__repr__类。

0 个答案:

没有答案