【发布时间】:2023-09-08 10:34:01
【问题描述】:
Print 打印 dict 没有问题:
d = dict()
d['x'] = 'y'
print(d)
{'x': 'y'}
那为什么会失败呢?
class Utterance:
def __init__(self, intent_name, text):
self.intent_name = intent_name
self.text = text
def __str__(self):
return dict(self.__dict__)
print(utterance)
Traceback (most recent call last): print(utterance) TypeError: __str__ returned non-string (type dict)
(我知道__str__返回字符串是标准的,但我有一个与JSON编码相关的原因返回dict)
【问题讨论】:
-
你读过这个吗:*.com/questions/47452513/…?
-
整个对象模型期望
__str__能够很好地返回一个字符串...甚至dicts__str__使用它的数据来构建一个返回的字符串。 .. 你可以做return str(dict(self.__dict__))... (或者制作一个自定义方法来返回一个字典,然后让你的__str__方法返回那个str) -
为什么不使用 JSON 表示?
return json.dumps(self.__dict__) -
__str__期望返回str。 -
@lonut Ticus 使用 dict 方法仍然不能解决我的问题。我需要的是这个(字典类) [{'intent_name': 'i1', 'text': 'u1'}, {'intent_name': 'i1', 'text': 'u2'}]
{'intent_name': 'i1', 'text': 'u1'} json.dumps(self.__dict__) 返回不在这里的字符串