我有一个抽象类(称为AbstractSparseVector),其最重要的特性是字典(称为dict)。所以在__repr__
函数中我只调用str(self.dict)。
现在,实现子类在该字典中都具有不同类型的值。一个只有一个浮点数,另一个包含3个元素的元组:boolean,string,string。后一类的字符串可以包含特殊字符,例如'ö',但打印我的AbstractSparseVector会将该字符更改为'\ xc3 \ xb6g'。
现在从this回答我明白这是因为字典调用元组的__repr__
,它返回错误的'\ xc3 \ xb6g'字符。如果它调用__str__
,它将正确打印。
有没有很好的方法来实现这个目标?
到目前为止,我唯一的解决方案是迭代字典的键值对,然后遍历元组,以便我可以获得这些字符串的__str__
表示而不是__repr__
表示和拼接我自己的输出字符串togeter。
这很丑陋且也不切实际,因为AbstractSparseVector的每个子类都必须实现自己的__repr__
类。